C++ ShellExecute

davidbaumann

Commodore
Registriert
Aug. 2004
Beiträge
4.867
Hallo zusammen,

hab hier im allerneuesten VisualStudio "für Windows Desktop" ein C++ Projekt erstellt:
https://www.computerbase.de/forum/threads/native-exe-erstellen.1292811/


Mein Code schaut so aus:
Code:
#include <stdio.h>

int main(void)
{
	ShellExecute(NULL, "open", "calc.exe", NULL, NULL, SW_SHOWNORMAL);
	
	return 0;
}

Er sagt mir aber:
Code:
	1	IntelliSense: Der Bezeichner ""ShellExecute"" ist nicht definiert.	c:\Users\VM\Documents\Visual Studio 2013\Projects\ConsoleApplication1\ConsoleApplication1\Quelle.cpp	5	2	ConsoleApplication1
Woran liegts? Hab schon gegoogled, aber nicht rausgefunden, welche Datei ich includen muss...
Die Hilfe sagt auch nix dazu...

​Gruß.
 
Shellapi.h
 
Nice. In der MSDN hatte ich natürlich nachgeschaut. Aber irgendwie hab ichs wohl verrafft :)

​Gruß
 
Off-topic: Bitte in Zukunft nicht mehr den veralteten <stdio.h>-Header sondern den standardkonformen <cstdio>-Header einziehen. Bei allen alten Standard-Headern, die C++ von C geerbt hat, fällt das ".h" weg und es kommt ein "c"-Präfix dazu. Also

  • time.h -> ctime
  • math.h -> cmath
  • assert.h -> cassert
  • stdio.h -> cstdio
  • etc ...

Für C++-spezifische Standard-Header wird einfach nur das ".h" weggelassen, aber es kommt kein "c"-Präfix dazu:

  • iostream.h -> iostream
  • vector.h -> vector
  • list.h -> list
  • map.h -> map
  • etc ...
 
In C gibt es doch gar keine Namensräume (damit will ich nicht sagen, dass man das nicht braucht. War nur mein erster Gedanke, denn ich kann gar kein C++) :/
 
Hancock schrieb:
Aber muss man bei den <c...>-Headern nicht dann immer den std-Namensraum importieren?
Also double wurzel=std::sqrt(-1.0);

Schon, aber das muß dann eben sein. Obwohl ich's natürlich hätte erwähnen sollen (Schande über mich).
 
Zurück
Oben