![]() |
Problem mit shellexecute und Pfad
Hi DP'ler,
ich muss eine Anwendung, aus meinem Programm heraus, starten. Das versuche ich mit shellexecute. Problem: die zugehörigen ini Dateien usw befinden sich in dem Programmfolder. Ich habe versucht den Pfad zu übergeben. Das funktioniert jedoch nicht. Das Programm wird nicht einmal gestartet.
Delphi-Quellcode:
starte ich das, wie unten, wird das Programm geöffnet aber er findet seine Ini Dateien nicht. Ist auch ganz klar, woher soll er wissen wo sie liegen.
var dbpath:string;i:integer;
begin caption:=get_language_item('GER','form_searcher','sg_header_1'); bn1.caption:=get_language_item('GER','form_searcher','sg_header_1'); dbpath:=extractfilepath(application.ExeName)+'LCRset2\'); i:=ShellExecute(Application.Handle, 'open', 'LCRset2\LCRset2.exe',nil,pchar(dbpath), SW_SHOW);
Delphi-Quellcode:
i:=ShellExecute(Application.Handle, 'open', 'LCRset2\LCRset2.exe',nil,nilSW_SHOW);
Kann mir jemand helfen? Grüsse rainer |
AW: Problem mit shellexecute und Pfad
Delphi-Quellcode:
dbpath := extractfilepath(application.ExeName);
i := ShellExecute(Application.Handle, 'open', Pchar(dbpath + 'LCRset2\LCRset2.exe'), nil, nil, SW_SHOW); |
AW: Problem mit shellexecute und Pfad
Was Andreas sagen will: Nutze möglchst absolute (vollständige) und keine relativen Pfadangaben.
oder
Delphi-Quellcode:
(isses Selbe)
dbpath := extractfilepath(ParamStr(0));
|
AW: Problem mit shellexecute und Pfad
Hallo,
danke für eure Antworten. Das ist mir schon klar. Das ist aber auch nicht mein Problem.
Delphi-Quellcode:
dbpath:=extractfilepath(application.ExeName);
i:=ShellExecute(Application.Handle, 'open', Pchar(dbpath + 'LCRset2\LCRset2.exe'),nil,nil, SW_SHOW); So läuft das, das Programm meckert nur dass es seine Ini Dateien nicht findet! Mein Problem ist, dass ich dem Programm den Pfad mitgeben muss in dem es seine Dateien findet.
Delphi-Quellcode:
In dieser Version läuft überhaupt nichts mehr.
dbpath:=extractfilepath(application.ExeName);
i:=ShellExecute(Application.Handle, 'open', Pchar(dbpath + 'LCRset2\LCRset2.exe'),nil,Pchar(dbpath + 'LCRset2', SW_SHOW); Also mein Programm läuft unter: ...searcher\ das aufzurufende Programm liegt unter: ...searcher\LCRset2\LCRset2.exe shellexecute muss das Programm LCRset2.exe im seinem Verzeichnis ausführen. Grüsse Rainer |
AW: Problem mit shellexecute und Pfad
Welchen Wert gibt ShellExecute zurück? Die Angabe des WorkingDir (5ter Parameter) ist normalerweise nicht notwendig.
![]() |
AW: Problem mit shellexecute und Pfad
Hi,
gibt 2 zurück. Kann ich aus der MSN Site leider nicht nachvollziehen. Grüsse Rainer |
AW: Problem mit shellexecute und Pfad
Also bitte ein bisschen Eigeninitiative: ShellApi.pas öffnen und schauen welche Konstante den Wert 2 hat...
![]() 2 = Datei nicht gefunden |
AW: Problem mit shellexecute und Pfad
Moin...
Zitat:
versuch mal:
Delphi-Quellcode:
... da fehlte in der Pfadangabe eine Klammer.
dbpath:=extractfilepath(application.ExeName;
i:=ShellExecute(Application.Handle, 'open', Pchar(dbpath + 'LCRset2\LCRset2.exe'),nil,Pchar(dbpath + 'LCRset2'), SW_SHOW); Ansonsten als Notlösung vorher das CurrentDirectory auf den Pfad mit der LCRset2.exe setzen. |
AW: Problem mit shellexecute und Pfad
Hi,
das funktioniert mit shellexecute nicht! Habe eine andere Lösung:
Delphi-Quellcode:
Grüsse
procedure ShellExecAndWait(dateiname: string; dir: string; Parameter: string); // benötigt ShellAPI in Uses
var executeInfo: TShellExecuteInfo; dw: DWORD; begin FillChar(executeInfo, SizeOf(executeInfo), 0); with executeInfo do begin cbSize := SizeOf(executeInfo); fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT; Wnd := GetActiveWindow(); executeInfo.lpVerb := 'open'; executeInfo.lpParameters := PChar(Parameter); executeInfo.lpDirectory:= PChar(dir); lpFile := PChar(dateiname); nShow := SW_SHOWNORMAL; end; if ShellExecuteEx(@executeInfo) then dw := executeInfo.HProcess else begin ShowMessage('Fehler: ' + SysErrorMessage(GetLastError)); exit; end; while WaitForSingleObject(executeInfo.hProcess, 50) <> WAIT_OBJECT_0 do Application.ProcessMessages; CloseHandle(dw); end; Aufgerufen mit: dbpath:=extractfilepath(application.ExeName)+'LCRset2\'; ShellExecAndWait(dbpath + '\LCRset2.exe',dbpath,''); so funktionierts nicht. i:=ShellExecute(Application.Handle, 'open', Pchar(dbpath + 'LCRset2.exe'),nil,pchar(dbpath), SW_SHOW); Rainer PS: würde mich aber schon interessieren warum das so ist! |
AW: Problem mit shellexecute und Pfad
Hi,
funktioiert doch. Hatte im Pfad einen Fehler.
Delphi-Quellcode:
Grüsse
dbpath:=extractfilepath(application.ExeName)+'LCRset2\';
i:=ShellExecute(Application.Handle, 'open', Pchar(dbpath + 'LCRset2.exe'),nil,pchar(dbpath), SW_SHOW); //pchar(dbpath) rainer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz