Delphi 5, Word 2000
Wenn ich aus einer Datenbank ein Worddokument hole, temporär speichere und nach dem Bearbeiten wieder in die Speichere funktioniert alles super, solange Word durch das createProcess gestartet wird. Ist Word vorher schon offen, öffnet das Worddokument zwar auch, aber mein Programm geht sofort durch den Rest der procedure, gibt die Fehlermeldung aus, dass das Dokument eigentlich nicht geöffnet werden kann und erkennt nicht mehr wann das Dokument geschlossen wird und alle Änderungen gehen verloren da ein zurücksichern in die Datenbank nicht mehr erfolgt.
.
GetStartupInfo(StartupInfo);
StartupInfo.wShowWindow := SW_SHOW;
if CreateProcess(nil,PChar(global_word_pfad + ' ' + sDokName),nil,nil,False,NORMAL_PRIORITY_CLASS,nil,
nil,StartupInfo,ProcessInfo)
then begin
repeat
Application.ProcessMessages;
GetExitCodeProcess(ProcessInfo.hProcess, dwexit);
// dwexit ist sofort 0 obwohl Word zweimal offen ist
until dwExit <> still_active;
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
{Standard-Dokument in DB speichern}
DSET_DocVorlageWordDOKUMENT.LoadFromFile(sDokName) ;
end
else MessageDlg('Word kann nicht gestartet werden',mtError,[mbOk],0);
Was muss ich am Quelltext ändern, damit das funktioniert. Word vorher von Hand zu schließen ist nicht die Lösung, da die Benutzer Word permanent offen haben wollen, weil Sie es ständig benutzen.
Gruß Andreas
Wenn ich aus einer Datenbank ein Worddokument hole, temporär speichere und nach dem Bearbeiten wieder in die Speichere funktioniert alles super, solange Word durch das createProcess gestartet wird. Ist Word vorher schon offen, öffnet das Worddokument zwar auch, aber mein Programm geht sofort durch den Rest der procedure, gibt die Fehlermeldung aus, dass das Dokument eigentlich nicht geöffnet werden kann und erkennt nicht mehr wann das Dokument geschlossen wird und alle Änderungen gehen verloren da ein zurücksichern in die Datenbank nicht mehr erfolgt.
.
GetStartupInfo(StartupInfo);
StartupInfo.wShowWindow := SW_SHOW;
if CreateProcess(nil,PChar(global_word_pfad + ' ' + sDokName),nil,nil,False,NORMAL_PRIORITY_CLASS,nil,
nil,StartupInfo,ProcessInfo)
then begin
repeat
Application.ProcessMessages;
GetExitCodeProcess(ProcessInfo.hProcess, dwexit);
// dwexit ist sofort 0 obwohl Word zweimal offen ist
until dwExit <> still_active;
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
{Standard-Dokument in DB speichern}
DSET_DocVorlageWordDOKUMENT.LoadFromFile(sDokName) ;
end
else MessageDlg('Word kann nicht gestartet werden',mtError,[mbOk],0);
Was muss ich am Quelltext ändern, damit das funktioniert. Word vorher von Hand zu schließen ist nicht die Lösung, da die Benutzer Word permanent offen haben wollen, weil Sie es ständig benutzen.
Gruß Andreas
Comment