Entwickler-Ecke

Sonstiges (Delphi) - Microsoft Word Prozess bleibt aktiv; Quit Fehler


MisterBum83 - Mi 06.02.13 11:03
Titel: Microsoft Word Prozess bleibt aktiv; Quit Fehler
Hallo zusammen,

ich baue mittels


Delphi-Quelltext
1:
2:
FMSWord: variant;
FMSWord := CreateOleObject('Word.Basic');


eine Verbindung zu Word her. Wenn ich diese über unassigned freigebe, bleibt der Prozess winword.exe noch aktiv.

Wenn ich versuche, mittels


Delphi-Quelltext
1:
2:
FMSWord.Quit(wdDoNotSaveChanges, EmptyParam, EmptyParam);
FMSWord.Disconnect;


den Prozess versuche zu beenden, dann kommt die Meldung "Quit wird vom Automatisierungsobjekt nicht unterstützt.
Jemand eine Idee warum, bzw. wie bekomme ich anders den Prozess beendet?

Gruß MisterBum


thepaine91 - Mi 06.02.13 14:59

Also laut Dokumentation [http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/OleAuto_CreateOleObject.html] sollte das funktionieren. Dort wird allerdings "Word.Application" verwendet.

Unter Umständen hilft dir das weiter.


Tranx - Do 07.02.13 11:45

Schaue mal hier nach:

http://www.delphi-treff.de/tipps/comoledde/word/word-mit-ole-automation-steuern/

Dort steht bei "Word.Basic" etwas von "früheren Versionen". Das kann schon erklären, dass das so nicht funktioniert.


MisterBum83 - Fr 08.02.13 18:52

Wenn ich auf Word.Application umsteige, dann klappt leider der Rest von meinem Programm nicht mehr. Daher muss ich bei Word.Basic bleiben.

Sonst keiner eine Idee?


Tranx - Fr 08.02.13 19:05

Entschuldige, aber das verstehe ich nicht. Wo definierst Du denn die Variant-Variable für Word? Global? Lokal?

Wenn es global ist, dann versuche es doch mal mit einer lokalen Definition, dann sollte das klappen. Allerdings scheint es nun mal so, dass Word.Basic offensichtlich nur für frühere Word-Versionen funktioniert, während Word.Application bei den neueren Versionen funktioniert. Es mag ja sein, dass Du mit Word.Basic Word starten kannst. Aber anscheinend eben nicht beenden. Oder versuche es doch mit


Delphi-Quelltext
1:
  FMSWord.Free;                    


Aber möglicherweise wird damit Word auch nicht beendet. Ein Versuch wäre es Wert.


Gerd Kayser - Fr 08.02.13 19:31

user profile iconMisterBum83 hat folgendes geschrieben Zum zitierten Posting springen:
Daher muss ich bei Word.Basic bleiben.


Versuchs mal mit:
Zitat:
Word.FileExit(1);
quits Word, saving any modified file. If you pass 2 as the parameter, files are not saved; if the parameter is 0 or omitted, the user is prompted."


Quelle: http://www.djpate.freeserve.co.uk/AutoWord.htm#WordStarting


MisterBum83 - Mo 11.02.13 10:34

Zitat:
Word.FileExit(1);
quits Word, saving any modified file. If you pass 2 as the parameter, files are not saved; if the parameter is 0 or omitted, the user is prompted."

Quelle: http://www.djpate.freeserve.co.uk/AutoWord.htm#WordStarting


Das war die Löung. DANKE!