Hier würd' ich zusätzlich noch versuchen, den Rückgabewert von ShellExecute auszuwerten, der könnte dann z. B. "ERROR_FILE_NOT_FOUND = The specified file was not found." oder "ERROR_PATH_NOT_FOUND = The specified path was not found." oder weiteres lauten.
ChDir liefert leider keinen Rückgabewert, ob's geklappt hat oder nicht, aber mit GetCurrentDir kann man das prüfen. (Und in neueren Delphis geht's vermutlich noch eleganter.)
Delphi-Quellcode:
ChDir(WorkPath);
if GetCurrentDir <> WorkPath
then
begin
Fehlermeldung zu ungültigem Pfad
end
else
begin
iResult := ShellExecute(0, '
open', PChar(WorkFile), PChar(Params),
nil, SW_Hide);
if iResult <= 32
then
begin
// Mögliche Fehler sind hier: https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellexecutea
Fehlermeldung zu erfolglosem ShellExecute.
end;
end;