Du gibst in deiner Funkion doch schon den Rückgabewert von Shellexecute zurück. Warum guckst du nicht einfach, was zurückgegeben wird?
Das kann ich fast verstehen.
ShellExecute ist dahingehend echt vermurkst. Wenn man
ShellExecuteEx benutzt bekommt man wenigstens echte
Win32-Fehlercodes und nicht den Quark den ShellExecute liefert.
Aber zumindest gäbe das einen Anhaltspunkt.