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 Parameterübergabe bei ShellExecute (https://www.delphipraxis.net/100386-parameteruebergabe-bei-shellexecute.html)

Jonelmeier 27. Sep 2007 13:36


Parameterübergabe bei ShellExecute
 
Hallo!

Ich versuche grade eine exe zu starten (funktioniert wunderbar), und zwar mit folgendem Code:

Delphi-Quellcode:
parameter := '/parameter_eins=' + OpenDialogServer.FileName +
             ' /parameter_zwei=' + OpenDialogGame.FileName;
ShellExecute(Application.Handle,
                 'open',
                 'C:\Pfad\Zur\Datei.exe',
                 PChar(parameter),
                 'C:\Pfad\Zur\',
                 SW_SHOWNORMAL);
So, wenn jetzt aber die beiden Variablen OpenDialogServer.FileName und OpenDialogGame.FileName (sie enthalten Pfade zu zwei Textdateien) Leerzeichen enthalten, funktioniert das ganze nicht mehr. Die aufzurufende exe versucht dann, den Teil nach einem Leerzeichen als neuen Parameter zu interpretieren, was natürlich nicht sein soll...
Vielleicht hat jemand 'nen Tipp, wie ich es hin bekomme, das es auch mit Leerzeichen in den Pfaden funktioniert?!?
Wäre Dankbar!!!

(Ob ShellExecute oder CreateProcess richtiger ist mir im Moment erstmal egal :oops: :oops: )

Jonas aus Hamburg

Tormentor32 27. Sep 2007 13:38

Re: Parameterübergabe bei ShellExecute
 
Setze das Ganze in Anführungszeichen, dann sollte es gehen.

Edit: Ich meine die Pfadangaben...

dominikkv 27. Sep 2007 13:39

Re: Parameterübergabe bei ShellExecute
 
ersetz doch die leerzeichen (zB mit %20)
oder versuch mal den parameter mit "" einzurahmen

Jonelmeier 27. Sep 2007 13:46

Re: Parameterübergabe bei ShellExecute
 
Habs ausprobiert mit /parameter_eins="C:\Pfad zur\Datei.txt" allerdings kommt dann bei der exe als wert für parameter_eins folgendes an: _C_\Pfad zur\Datei.exe_ womit es natürlich nichts anfangen kann...

s-off 27. Sep 2007 13:59

Re: Parameterübergabe bei ShellExecute
 
Hallo,

Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
Var
   sParameter: String;
   sFileName: String;

   Function QuotedStr(_sString: String): String;
   Begin
      Result := #034 + _sString + #034;
   End;

Begin
   sParameter := Format('/parameter_eins="%s" /parameter_zwei="%s"',
      [OpenDialogServer.FileName, OpenDialogGame.FileName]);
   sFileName := QuotedStr('C:\Programme\Test\Test.exe');
   ShellExecute(
      Application.Handle
      'open',
      PChar(sFileName),
      PChar(sParameter),
      PChar(ExtractFilePath(sFileName)),
      SW_SHOWNORMAL);
End;
Edit: neu formatiert

Jonelmeier 27. Sep 2007 14:25

Re: Parameterübergabe bei ShellExecute
 
@s-off:

Nach der Methode bekomme ich aber immer noch, wenn ich C:\Pfad zur\Datei.txt übergebe, von der EXE die Meldung das es die übergebene Datei _C_\Pfad nicht gefunden wurde, also es wird immernoch an der Leerstelle abgeschnitten...
Liegt's vielleicht an der Umwandlung nach PChar?

s-off 27. Sep 2007 14:32

Re: Parameterübergabe bei ShellExecute
 
Mein Fehler, probiers mal so:

Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
Var
   sParameter: String;
   sFileName: String;

   Function QuotedStr(_sString: String): String;
   Begin
      Result := #034 + _sString + #034;
   End;

Begin
   sParameter := Format('/parameter_eins="%s" /parameter_zwei="%s"',
      [OpenDialogServer.FileName, OpenDialogGame.FileName]);
   sFileName := 'C:\Programme\Test\Test.exe';
   ShellExecute(
      Application.Handle
      'open',
      PChar(QuotedStr(sFileName)),
      PChar(sParameter),
      PChar(QuotedStr(ExtractFilePath(sFileName))),
      SW_SHOWNORMAL);
End;
Kanns gerade net testen, darum :?

Jonelmeier 27. Sep 2007 14:53

Re: Parameterübergabe bei ShellExecute
 
Ich bekomme immer noch den gleichen Fehler :oops: :oops: :cry:

Aber danke für deine Bemühungen bis jetzt!!!

DeddyH 27. Sep 2007 15:00

Re: Parameterübergabe bei ShellExecute
 
Andere Idee: was passiert denn, wenn Du die Parameter zuerst über GetShortPathName in 8.3-Namen wandelst?

s-off 27. Sep 2007 15:11

Re: Parameterübergabe bei ShellExecute
 
Zitat:

Zitat von Jonelmeier
Ich bekomme immer noch den gleichen Fehler :oops: :oops: :cry:

Da brauchst Du net rot zu werden; die Schuld liegt wahrscheinlich bei mir. Kann es nur so aus dem Gedächtnis schreiben, da ich im Moment kein Delphi zur Hand habe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz