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/)
-   -   Start in ShellExecute benutzen (https://www.delphipraxis.net/153429-start-shellexecute-benutzen.html)

Shark99 2. Aug 2010 16:50


Start in ShellExecute benutzen
 
Folgender Code funktioniert in der Kommandozeile:

Code:
start shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}
Wie kann ich das selbe mittels ShellExecute oder CreateProcess starten?

DeddyH 2. Aug 2010 16:51

AW: Start in ShellExecute benutzen
 
Die Kommandozeile per ShellExecute aufrufen und den Befehl als Parameter übergeben?

Shark99 2. Aug 2010 17:25

AW: Start in ShellExecute benutzen
 
Hab ich natürlich versucht, funktioniert aber nicht.

Weder

Delphi-Quellcode:
    ShellExecute(Application.Handle,
         'open',
         'cmd.exe',
         'start shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}',
         nil,
         SW_SHOW);
noch

Delphi-Quellcode:
    ShellExecute(Application.Handle,
         'open',
         'cmd.exe',
         '/c start shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}',
         nil,
         SW_SHOW);
noch

Delphi-Quellcode:
    ShellExecute(Application.Handle,
         'open',
         'rundll32.exe',
         'start shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}',
         nil,
         SW_SHOW);
funktioniert.

DeddyH 2. Aug 2010 18:45

AW: Start in ShellExecute benutzen
 
Kann ich nicht nachvollziehen, bei mir klappt es.

rollstuhlfahrer 2. Aug 2010 19:03

AW: Start in ShellExecute benutzen
 
Zitat:

Zitat von Shark99 (Beitrag 1039050)
Delphi-Quellcode:
    ShellExecute(Application.Handle,
         'open',
         'cmd.exe',
         'start shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}',
         nil,
         SW_SHOW);
[ ... ]
noch

Delphi-Quellcode:
    ShellExecute(Application.Handle,
         'open',
         'rundll32.exe',
         'start shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}',
         nil,
         SW_SHOW);
funktioniert.

Diese beiden können auch gar nicht funktionieren. Dass die CMD einen Befehl ausführt, muss dieser schon mit dem Paraketer /k (CMD offen lassen) oder /c (CMD schließen) verwendet werden. Für rundll32 ist die Syntax einfach falsch, weswegen er auch nichts macht.

Was soll eigentlich die Anweisung machen? - Ich habe das testweise mal unter WinXP ausprobiert und statt das was passiert wurde mir nur jedes Mal der Befehl aus der Zwischenablage gelöscht. - Windows 7 ist leider die Mindestanforderung für diesen Befehl. Aber wenn du das machst, wie hier beschrieben, denke ich mal, dass es funktionieren sollte.

Bernhard

Shark99 2. Aug 2010 19:48

AW: Start in ShellExecute benutzen
 
Mit explorer.exe klappt es! Danke!

Luckie 2. Aug 2010 19:49

AW: Start in ShellExecute benutzen
 
Es wäre eventuell auch keine schlechte Idee mal den Rückgabewert von Shellexecute auszuwerten.

himitsu 2. Aug 2010 20:53

AW: Start in ShellExecute benutzen
 
Delphi-Quellcode:
ShellExecute(Application.Handle, 'open', 'cmd.exe',
  'start shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}',
  nil, SW_SHOW);
das kann nicht funktionieren, denn dieses ergibt
Code:
commandline> cmd.exe start shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}
also das shell::: ist ein Parameter für die cmd.exe :!:

ließ dir mal die Parameterdeklaration der cmd.exe durch
Code:
commandline> cmd.exe /?


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