kenn mich zwar mit den fehler dingern noch nich so aus, aber wenn du 'ShellExecuteWait' mal genau anschaust, steht da:
Erfolg: Gibt den "exit code" des ausgeführten Programms zurück.
Fehler: Gibt 0 zurück und setzt @error auf nicht-null.
liegts vllt daran?