Zweites Speicherloch:
GlobalFree(THandle(TempArgs));
denn TempArgs ist nicht mehr gültig (wegen Inc()).
Das sollte sich mit einem weiteren PPWideChar lösen lassen, welchem nach
TempArgs := CommandLineToArgvW(GetCommandLineW, NumArgs);
der Wert von TempArgs zugewiesen wird.