ShellExecute hat den großen Vorteil, dass es mit Anwendungen verknüpfte Dateien und URLs 'ausführen' kann.
ShellExecute( NULL, "open", "calc", NULL, NULL, SW_SHOWDEFAUL );
started den Taschenrechner,
ShellExecute( NULL, "open", "bla.doc", NULL, NULL, SW_SHOWDEFAULT );
öffnet die Datei mit Word,
ShellExecute( NULL, "open", "http://www.google.com", NULL, NULL, SW_SHOWDEFAULT );
started den Browser usw.
ShellExecute startet allerdings nicht den Kommandozeileninterpreter (command/cmd), daher funktioniert
ShellExecute( NULL, "open", "dir c:\\", NULL, NULL, SW_SHOWDEFAULT );
nicht, weil dir ein interner Befehl ist, der in den Kommandozeileninterpreter eingebaut ist.
In dem Fall kann man aber den Umweg über eine .bat-Datei gehen.