1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48:
| uses shellapi;
var StartupInfo:TStartupInfo; ProcessInfo:TProcessInformation; doc:string; buf:array[0..max_path-1]of char;
function start:boolean; begin StartupInfo.cb := Sizeof(StartupInfo); FillChar(StartupInfo,Sizeof(StartupInfo),#0); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := SW_MAXIMIZE; result:=CreateProcess( nil, pchar(string(buf)+#32+doc), nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo); end;
procedure TForm1.Button2Click(Sender: TObject); begin doc:='C:\test.doc'; findexecutable(pchar(doc),nil,buf); if not start then showmessage('Fehler') else begin repeat Application.ProcessMessages; // hier können bei Bedarf weitere Dinge // passieren, während der andere Prozess läuft until (WaitforSingleObject(ProcessInfo.hProcess,0)<>WAIT_TIMEOUT) or(application.terminated); CloseHandle(ProcessInfo.hThread); CloseHandle(ProcessInfo.hProcess); showmessage('Das aufgerufenen Fenster wurde soeben geschlossen'); end; end; |