Entwickler-Ecke

Windows API - Problem mit Shellexecute und String


icedre - So 24.04.05 14:11
Titel: Problem mit Shellexecute und String
Hallo,

ich hab da ein Problem:
und zwar möchte ich ein Programm mit Shellexecute starten, der Code dafür ist folgender:

Delphi-Quelltext
1:
ShellExecute(Application.Handle, 'open''C:\WINDOWS\explorer.exe''-s -t 2'nil, SW_SHOW);                    


Anstatt der genauen Pfadangabe "C:\WINDOWS\explorer.exe" , möchte ich an der Stelle einen String angeben, in dem der Pfad zum Programm steht.
Wie kann ich jetzt den String dort mit einbringen ?
So:

Delphi-Quelltext
1:
ShellExecute(Application.Handle, 'open', pfad_string, '-s -t 2'nil, SW_SHOW);                    

funktioniert es jedenfalls nicht... :cry:

Vielen Dank, icedre

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.
Moderiert von user profile iconChristian S.: Topic aus VCL (Visual Component Library) verschoben am So 24.04.2005 um 14:13


Harry M. - So 24.04.05 14:14

wo wird denn pfad_string inizalisiert??

versuch es mal so


Delphi-Quelltext
1:
 ShellExecute(Application.Handle, 'open''explorer.exe''c:\winnt'nil, SW_SHOW);                    

die pfadangabe mut du extra setzten und für was die parameter welche du angegeben hast??


Gausi - So 24.04.05 14:42
Titel: Re: Problem mit Shellexecute und String
Wenn ich das richtig in Erinnerung habe, werden bei Shellexecute PChars erwartet, also muss man ggf. ein Typecast durchführen:

Delphi-Quelltext
1:
ShellExecute(Application.Handle, 'open'PChar(pfad_string)'-s -t 2'nil, SW_SHOW);                    


icedre - So 24.04.05 14:49

Hallo,

danke.

Wenn ich es mit PCChars mache öffnet er mir immer das ein und selbe Verzeichnis, egal, was im String steht.
C:\Programme\Borland\Delphi6\Projects


Sprint - So 24.04.05 14:50
Titel: Re: Problem mit Shellexecute und String
user profile iconicedre hat folgendes geschrieben:
Anstatt der genauen Pfadangabe "C:\WINDOWS\explorer.exe" , möchte ich an der Stelle einen String angeben, in dem der Pfad zum Programm steht.
Wie kann ich jetzt den String dort mit einbringen ?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
  strApp: String;
  strParam: String;
begin

  strApp := 'C:\WINDOWS\SYSTEM32\NOTEPAD.EXE';
  strParam := 'C:\BOOT.INI';
  ShellExecute(GetDesktopWindow, 'open', PChar(strApp), PChar(strParam), nil, SW_SHOWNORMAL);

end;


Fabian W. - So 24.04.05 15:15

Kann es sein das es was ShellExecute 'Tausende' verschiedene Möglichkeiten gibt?
Ich hab jetzt schon mindestens 5 verschiedene Möglichkeiten gesehn. Ist doch klar dass es da zun Problemen kommen kann.


Delete - So 24.04.05 15:24

user profile iconFabian W. hat folgendes geschrieben:
Kann es sein das es was ShellExecute 'Tausende' verschiedene Möglichkeiten gibt?

Nein! Es gibt nur den einen Befehl, und dessen Parameter sind auch fest vorgegeben. Wenn du mal davon ausgehst, dass der Aufruf eines Programms, einer Webseite oder einer Email-Adresse letztlich alle das gleiche Ziel haben (das Programm zu öffnen, die Webseite anzuzeigen, ein Email-Fenster zu öffnen), und wenn du alle ohnehin falschen Beispiele vergisst (nach dem Motto: "Ich habe ShellExecute so aufgerufen, aber es klappt nicht" :lol:), dann bleibt nur eine Möglichkeit übrig. ;)


icedre - So 24.04.05 15:56

So,

alles klar, es funktioniert:

Delphi-Quelltext
1:
2:
sollprog:='C:\WINDOWS\explorer.exe';
ShellExecute(Application.Handle, 'open', PChar(sollprog), nilnil, SW_SHOW);


Vielen Dank :)

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.