Hallo zusammen
Ich habe in der Vergangenheit immer wieder die Funktion WinExecAndWait_32 benutzt um aus Delphi heraus externe Programme zu starten. Das funktioniert auch fehlerfrei.
Was mir jetzt zum ersten mal auffällt ist, das es mir nicht gelingt ein PDF-File zu öffnen. Ich bin immer davon ausgegangen das wenn ich das PDF-File übergebe, der Acropbat Reader automatisch startet und das PDF-File dann anzeigt.
Hier passiert aber garnichts. Keine Fehlermeldung, kein PDF-File.
Habe ich da falsch gedacht, oder mache ich einen Fehler?
Wie kann ich, ohne den Pfad zum Acrobat Reader zu kennen, das PDF-File mit der Funktion öffnen?
Ich rufe die Funktion wie folgt auf: WinExecAndWait_32('Hilfe.pdf',1,false);
wobei die Hilfe.pdf im gleichen Verzeichnis ist wie mein Delphi-Programm.
Gruß
Michael
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:
| function WinExecAndWait_32(FileName: string; Visibility: Integer; bWait: Boolean = False): Longword; var zAppName: array[0..512] of Char; zCurDir: array[0..255] of Char; WorkDir: string; StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; begin StrPCopy(zAppName, FileName); GetDir(0, WorkDir); StrPCopy(zCurDir, WorkDir); FillChar(StartupInfo, SizeOf(StartupInfo), #0); StartupInfo.cb := SizeOf(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := Visibility; if not CreateProcess(nil, zAppName, nil, nil, False, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then Result := WAIT_FAILED else begin if bWait then WaitForSingleObject(ProcessInfo.hProcess, INFINITE); GetExitCodeProcess(ProcessInfo.hProcess, Result); CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); end; end; |