AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Parameterübergabe bei ShellExecute
Thema durchsuchen
Ansicht
Themen-Optionen

Parameterübergabe bei ShellExecute

Ein Thema von Jonelmeier · begonnen am 27. Sep 2007 · letzter Beitrag vom 27. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
Jonelmeier

Registriert seit: 27. Sep 2007
Ort: Hamburg
96 Beiträge
 
Delphi XE Starter
 
#1

Parameterübergabe bei ShellExecute

  Alt 27. Sep 2007, 14:36
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 )

Jonas aus Hamburg
Jonas
  Mit Zitat antworten Zitat
Benutzerbild von Tormentor32
Tormentor32

Registriert seit: 27. Okt 2005
Ort: Düsseldorf
369 Beiträge
 
Delphi XE5 Professional
 
#2

Re: Parameterübergabe bei ShellExecute

  Alt 27. Sep 2007, 14:38
Setze das Ganze in Anführungszeichen, dann sollte es gehen.

Edit: Ich meine die Pfadangaben...
Richard Mahr
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Parameterübergabe bei ShellExecute

  Alt 27. Sep 2007, 14:39
ersetz doch die leerzeichen (zB mit %20)
oder versuch mal den parameter mit "" einzurahmen
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Jonelmeier

Registriert seit: 27. Sep 2007
Ort: Hamburg
96 Beiträge
 
Delphi XE Starter
 
#4

Re: Parameterübergabe bei ShellExecute

  Alt 27. Sep 2007, 14:46
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...
Jonas
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#5

Re: Parameterübergabe bei ShellExecute

  Alt 27. Sep 2007, 14:59
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
  Mit Zitat antworten Zitat
Jonelmeier

Registriert seit: 27. Sep 2007
Ort: Hamburg
96 Beiträge
 
Delphi XE Starter
 
#6

Re: Parameterübergabe bei ShellExecute

  Alt 27. Sep 2007, 15:25
@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?
Jonas
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#7

Re: Parameterübergabe bei ShellExecute

  Alt 27. Sep 2007, 15:32
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
  Mit Zitat antworten Zitat
Jonelmeier

Registriert seit: 27. Sep 2007
Ort: Hamburg
96 Beiträge
 
Delphi XE Starter
 
#8

Re: Parameterübergabe bei ShellExecute

  Alt 27. Sep 2007, 15:53
Ich bekomme immer noch den gleichen Fehler

Aber danke für deine Bemühungen bis jetzt!!!
Jonas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#9

Re: Parameterübergabe bei ShellExecute

  Alt 27. Sep 2007, 16:00
Andere Idee: was passiert denn, wenn Du die Parameter zuerst über GetShortPathName in 8.3-Namen wandelst?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#10

Re: Parameterübergabe bei ShellExecute

  Alt 27. Sep 2007, 16:11
Zitat von Jonelmeier:
Ich bekomme immer noch den gleichen Fehler
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 Uhr.
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