Hallo,
ich möchte aus meinem Programm eine Word-Datei (.doc) mit Word starten, und dann solange warten, bis Word wieder vom Benutzer beendet wurde, also die Veränderungen am Word-Dokument abgeschlossen sind.
Dazu mache ich das:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| ... FillChar (StartupInfo, SizeOf (StartupInfo), #0); StartupInfo.cb := SizeOf(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK; StartupInfo.wShowWindow := SW_SHOW; if not CreateProcess(nil, @Filename[1], nil, nil, False, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then ShowMessage ('Fehler'); rc := WAIT_TIMEOUT; while (rc = WAIT_TIMEOUT) do begin Application.ProcessMessages; rc := WaitForSingleObject (ProcessInfo.hProcess, 500); end; ... |
(wobei Filename = Pfad zu Word.exe + Doc-Datei)
Das funktioniert auch, Word wird mit der angegebenen Datei geöffnet, und mein Programm wartet nun. Wenn ich Word beende, passiert genau das, was soll, mein Programm läuft weiter.
Das Problem kommt, wenn Word schon geöffnet ist (z.B. mit einem anderen Dokument).
Dann wird zwar mein Doc-Dokument auch geöffnet, aber mein Programm wartet nicht mehr und läuft gleich weiter, obwohl Word noch geöffnet ist.
Leider bin ich bei Win-API Profi, versuche mich also mehr oder weniger heranzutasten...
Weiß jemand, warum das passiert, und was man dagegen tun kann?
Danke!
Holger