Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ShellExecute Buggt bei bestimmten Programmen? (https://www.delphipraxis.net/67446-shellexecute-buggt-bei-bestimmten-programmen.html)

glkgereon 14. Apr 2006 13:47


ShellExecute Buggt bei bestimmten Programmen?
 
Hi,

Ich nutze folgenden Code um eine Anwendung auszuführen:

Delphi-Quellcode:
ShellExecute(0, PChar('open'), PChar(ExeName), PChar(Parameter), PChar(AppFolder), SW_SHOW);
Nun bin ich mir schon nicht sicher:
muss AppFolder der Ordner von der aufrufenden oder der aufgerufenen Anwendung sein? oder noch was anderes?

atm ist es nämlich der Ordner von der aufgerufenen.
das funktioniert auch eigentlich...Thunderbird, Steam, Winamp, lässt sich alles starten.
Allerdings gibt es ein Spiel "Empires die Neuzeit" (vielleicht kennt das der ein oder andere) welches sofort abstürzt
Zitat:

Zitat von Fehlermeldung
---------------------------
Microsoft Visual C++ Runtime Library
---------------------------
Runtime Error!

Program: D:\Empires die Neuzeit\Empires_DMW.exe



abnormal program termination

Während es sich aus dem Explorer mit einem Doppelklick ganz normal starten lässt.

Woran liegt das?
ist einer der Parameter falsch oder "ungenau"?
können das leute bestätigen oder habe das problem nur ich?

jim_raynor 14. Apr 2006 13:52

Re: ShellExecute Buggt bei bestimmten Programmen?
 
Nun AppFolder muss das Arbeitsverzeichnis der aufgerufenen Anwendung sein. Sollte also das Verzeichnis der aufgerufenen Anwendung sein.

Vielleicht erwartet ja die Anwendung ein anderes Arbeitsverzeichnis oder auch bestimmte Parameter. Gibts vielleicht irgendwo (Desktop / Startmenü) ne Verknüpfung darauf? Dann schau doch mal, was da als Arbeitsverzeichnis und als Parameter angegeben ist.

kalmi01 14. Apr 2006 13:52

Re: ShellExecute Buggt bei bestimmten Programmen?
 
Zitat:

Woran liegt das?
An den Leerzeichen im Pfad.
Probiers mal mit:
Delphi-Quellcode:
"D:\Empires die Neuzeit\Empires_DMW.exe"

glkgereon 14. Apr 2006 15:22

Re: ShellExecute Buggt bei bestimmten Programmen?
 
also bei
ExeName = "D:\Empires die Neuzeit\Empires_DMW.exe"
Folder = "D:\Empires die Neuzeit"

hängt er immer noch :(

kann es daran liegen das es "\" und nicht "/" sind?

ManuMF 14. Apr 2006 17:10

Re: ShellExecute Buggt bei bestimmten Programmen?
 
Hallo,

wenn der Pfad als separater Parameter (AppFolder) angegeben wird, würde ich ihn bei ExeName weglassen. Sonst wäre es ja sozusagen "C:\Pfad\C:\Pfad\EXE.exe".
Bei mir gab es übrigens oft Probleme, wenn ich bei Programmen 'open' geschrieben habe. Ich habe dann immer nil genommen.

Gruß,
ManuMF

faux 14. Apr 2006 17:20

Re: ShellExecute Buggt bei bestimmten Programmen?
 
Zitat:

Zitat von ManuMF
wenn der Pfad als separater Parameter (AppFolder) angegeben wird, würde ich ihn bei ExeName weglassen. Sonst wäre es ja sozusagen "C:\Pfad\C:\Pfad\EXE.exe".

Also selbst auf der [msdn:99d6718d7c="Shell Execute"]MSDN-Seite[/msdn:99d6718d7c] stehts nicht genau, aber ich nehme mal an, dass das das Arbeitsverzeichnis ist.

Grüße
Faux

Christian Seehase 14. Apr 2006 17:47

Re: ShellExecute Buggt bei bestimmten Programmen?
 
Moin Manu,

Zitat:

Zitat von ManuMF
wenn der Pfad als separater Parameter (AppFolder) angegeben wird, würde ich ihn bei ExeName weglassen. Sonst wäre es ja sozusagen "C:\Pfad\C:\Pfad\EXE.exe".

Exename ist der Pfad zur Datei. Nur wenn sich das Verzeichnis im Suchpfad befindet, kann man es weglassen.
AppFolder ist das Arbeitsverzeichnis. Wird dieses weggelassen, ist das Programmverzeichnis des aufgerufenen Programmes das Arbeitsverzeichnis.

@Gereon:
Also die \ sind schon OK.

Schau Dir doch mal den Rückgabewert von ShellExecute an (hierzu auf jeden Fall die Kommentar im "normalen" PSDK oder auf MSDN beachten, und nicht die des bei Delphi mitgelieferten PSDK-Auszuges).
Vielleicht gibt der ja schon einen brauchbaren Hinweis.

Probier's evtl. doch mal so:

Delphi-Quellcode:
ShellExecute(0,nil,'"D:\Empires die Neuzeit\Empires_DMW.exe"',nil,nil,SW_SHOWNORMAL);

faux 14. Apr 2006 18:15

Re: ShellExecute Buggt bei bestimmten Programmen?
 
Probiere mal einen Aufruf im 8.3 - Format, dann weißt du zumindest, obs am Pfad oder der EXE liegt.

Grüße
Faux


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 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