Was gibt ShellExecute denn für einen Wert zurück?
ShellExecute
Zitat:
Returns a value greater than 32 if successful, or an error value that is less than or equal to 32 otherwise.
Edit: In einen halbwegs verständlichen String müsstest du die Zahl auch das so wandeln können:
Delphi-Quellcode:
SEResult := ShellExecute(...);
ShowMessage(SysErrorMessage(SEResult));
Wenn das nichts bringt, kannst du auch mal das hier versuchen aufrufen:
ShowMessage(SysErrorMessage(GetLastError));