Delphi-PRAXiS
Seite 1 von 2  1 2      

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 mit mehreren Parametern (https://www.delphipraxis.net/43025-shellexecute-mit-mehreren-parametern.html)

Andreas L. 27. Mär 2005 18:39


ShellExecute mit mehreren Parametern
 
Hi,
ich möchte mit ShellExecute mehrere Parameter aufrufen. Ein Parameter geht ja, aber wie soll ich den zweiten aufrufen. Mein derzeitiger Code ruft leider nur den ersten Flag auf.

Delphi-Quellcode:
shellexecute(application.handle, 'open', Pchar(extractfilepath(application.exename)+'streamripper\streamripper.exe'),Pchar(Listbox2.Items.Strings[Listbox1.itemindex]+' -d '+OwnFolderPath),'',sw_shownormal);
Der erste Parameter ist ein Dateiname, der andere (-d '+OwnFolderPath) löst den parameter "d" mit der variable OwnFolderPath auf. Wieso geht mein Code nicht? Muss ich vielleicht den zweiten Flag wo anders positionieren?

Vielen Dank für eure hilfe

Bye,
Andy

mirage228 27. Mär 2005 18:42

Re: ShellExecute mit mehreren Parametern
 
Hi,

wenn ShellExecute fehlschlägt wird ein Code >= 32 zurückgegeben.

Also zur Fehlerbestimmung:
Delphi-Quellcode:
if ShellExecute(...) >= 32 then
  ShowMessage(SysErrorMessage(GetLastError)); // oder: RaiseLastOSError;
mfG
mirage228

Andreas L. 27. Mär 2005 18:49

Re: ShellExecute mit mehreren Parametern
 
Aber ShellExecute schlägt nicht fehl. Ich führe den oberen Code aus und es wird halt einfach nur der erste Parameter ausgeführt, der zweite nicht. Aber es kommen keine Fehler etc.

Mephistopheles 27. Mär 2005 23:20

Re: ShellExecute mit mehreren Parametern
 
Zitat:

Zitat von onlinehome
Aber ShellExecute schlägt nicht fehl. Ich führe den oberen Code aus und es wird halt einfach nur der erste Parameter ausgeführt, der zweite nicht. Aber es kommen keine Fehler etc.

Wie wäre es denn die Parameter einzeln in "" zu stecken, so wie man es auf der Kommandozeile auch tun würde?

arbu man 27. Mär 2005 23:26

Re: ShellExecute mit mehreren Parametern
 
oder versuch mal #13 dazwischen zu setzen

Andreas L. 28. Mär 2005 10:07

Re: ShellExecute mit mehreren Parametern
 
Ich hab das problem.
In der variable "OwnFolderPath" befindet sich ja ein Pfad. Dieser Pfad enthält ein Leerzeichen. Der Pfad lautet: F:\streamripper gui\streams

Die konsolenanwendung denkt das Verzeichnis lautet F:\streamripper. Es liegt also am Leerzeichen. gibt es da irgendeinen Platzhalter für Leerzeichen, so das die Konsolenanwendung den Pfad richtig erhält.

In Internet-Adressen gibts ja diese %20 als Leerzeichen. Was muss ich in meinen Sourcecoide einbauen?

Delphi-Quellcode:
StringReplace(OwnFolderPath,' ',%20,[rfReplaceAll]);
hmm???

Vielen Dank schonmal

mirage228 28. Mär 2005 10:13

Re: ShellExecute mit mehreren Parametern
 
Nein, wenn der Pfad Leerzeichen enthält muss Du den gesamten Pfad in Anführungszeichen setzen.

z.B. "C:\Mit Leerzeichen\abc.def"

mfG
mirage228

Mephistopheles 28. Mär 2005 10:14

Re: ShellExecute mit mehreren Parametern
 
*schnarch* Wie wäre es denn mal erst oben zu lesen und dann nochmal zu fragen. Die Hochkommata ("") werden auch auf der Kommandozeile benutzt um Leerzeichen enthaltende Parameter zusammenzuhalten.

Den anderen Trick mit #13 kenne ich nicht und kann daher nichts über Funktionsweise usw. aussagen.

Andreas L. 28. Mär 2005 10:58

Re: ShellExecute mit mehreren Parametern
 
Ahh, Danke.

Jetzt funktioniert alles. Endlich kann ich die beta zum testen freigeben...

MarLe 1. Apr 2005 11:59

Re: ShellExecute mit mehreren Parametern
 
Hallo,

ich habe gerade ein ähnliches Problem.

Delphi-Quellcode:
...
PChar("/devmod /lD:\Test"),
// als auch
PChar("/devmod" "/lD:\Test"),
// funktioniert
...
ShellExecute funktioniert ich bekomm von der Funlktion aber immer den Rückgabewert 42.
Mit diesem Wert fall ich dann in die Fehlerabfrage >= 32

Was bedeutet dieser Rückgabwert???


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 Uhr.
Seite 1 von 2  1 2      

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