ShellExecute will nicht!

  • Themenstarter Themenstarter bloodriver
  • Beginndatum Beginndatum
B

bloodriver

Ich habe jetz folgenden Source:

Code:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  ShellExecute(handle,"open","C:\Programme\Winamp\winamp.exe",NULL,NULL,SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------

ShellExecute funktioniert aber nicht! Muss ich noch irgendetwas in den Header schreiben oder so bzw. in die Include-Liste da oben?

Brauche schnell eine Antwort!

MFG -=[ bLoOd ]=-=[ R!V3R ]=-
 
ShellExecute funktioniert aber nicht! Muss ich noch irgendetwas in den Header schreiben oder so bzw. in die Include-Liste da oben?

Brauche schnell eine Antwort!
Wenn es so eilig ist, wäre es vielleicht eine gute Idee, mal in die Dokumentation zu schauen. ShellExecute gibt nämlich einen Fehlercode zurück. Vielleicht solltest du da ansetzen.
 
THX Endurion

@ Kachelator

Der Fehlercode ist wie folgt:

Call to undefined function 'ShellExecute'. --> Hab ich jetzt durch #include <shellapi.h>
Undefined symbol 'handle'. --> Hab ich durch NULL ersetzt.

Das ist in der C++ Hilfe von Borland drin:

ShellExecute(handle, NULL, path_to_folder, NULL, NULL, SW_SHOWNORMAL);

or

ShellExecute(handle, "open", path_to_folder, NULL, NULL, SW_SHOWNORMAL);

To explore a folder, use the following call:

ShellExecute(handle, "explore", path_to_folder, NULL, NULL, SW_SHOWNORMAL);

Das bringt mich auch nicht weiter, da er somit handle nicht findet und nach probieren bzw. aus Erfahrung aus Delphi habe ich einfach mal die shellapi.h in die include-liste gestzt. Nun geht es. In der Hilfe zu ShellExecute steht nichts von #include <shellapi.h> drin! Also kann ich mir da auch mit der Hilfe und ähnlichem nicht weiterhelfen, sondern nur mal auf ein paar Seiten im Internet anfragen!
 
Du hast ja nicht einmal erwähnt, dass es sich um Compilerfehler und nicht um Laufzeitfehler handelte.

Hast du wegen ShellExecute auch mal in die MSDN Lib reingeschaut?Das ist im Zweifelsfall die Standardrefernenz zur WinAPI.

Der erste Parameter soll ein Window-Handle sein. Das entsprechende Fenster erhält eventuelle Messageboxen. Hast du mal versucht, einfach das Handle vom Desktop anzugeben, falls du kein anderes hast? Ersetz mal "handle" durch "GetDesktopWindow()". Möglicherweise geht das.
 
Hallo bloodriver

Dein Befehl sieht so aus:

ShellExecute(handle,"open","C:\Programme\Winamp\winamp.exe",NULL,NULL,SW_SHOWNORMAL);


Ich kenne mich mit C++ zwar nicht aus, (programmiere mit VB) denke aber, dass die Parameter nicht anders sind!

Versuche mal, die Parameter "lpParameters" und "lpDirectory" mit Nullstring anstatt mit NULL anzugeben. (wie das in C++ aussieht, musst du selbst wissen).

Da du in "lpFile" eine .exe angegeben hast, muss zumindest einer der beiden folgenden Parameter Nullstring sein (probiers mal aus).


Viele Grüsse, Guido
 
Zurück