Hallo #,
folgender bekannter Code funktioniert leider mit OpenOffice (3.4.1) nicht mehr.
Delphi-Quellcode:
function ExecAndWait(const Filename, Params: string;
WindowState: word): boolean;
var
SUInfo: TStartupInfo;
ProcInfo: TProcessInformation;
CmdLine: string;
begin
{ Enclose filename in quotes to take care of
long filenames with spaces. }
CmdLine := '"' + Filename + '" ' + Params;
FillChar(SUInfo, SizeOf(SUInfo), #0);
with SUInfo do begin
cb := SizeOf(SUInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := WindowState;
end;
Result := CreateProcess(NIL, PChar(CmdLine), NIL, NIL, FALSE,
CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS, NIL,
PChar(ExtractFilePath(Filename)),
SUInfo, ProcInfo);
{ Wait for it to finish. }
if Result then
begin
MessageBox(0, PChar(IntToStr(ProcInfo.dwProcessId)), '', 0);
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
end;
end;
Das Problem ist, dass das WaitForSingleObject nicht wartet.
Schaue ich mit die ProzessId von swriter im Task-Manager an,
ist das nicht die gleiche wie ich in der MessageBox ausgebe.
OO erzeugt wohl einen 2. Prozess swriter, der das eigentliche Programm ist.
Was nun ?
Im Netz steht irgendwas von "ParentProcId benutzen",
also die Subprozesse überwachen ?
Ist das die richtige Richtung ?
Danke
Heiko
der