uses
ShellApi;
resourcestring
SFILE_NOT_FOUND = '
Die angegebene Datei "%s" konnte nicht gefunden werden.';
SNO_ASSOCIATED_EXE = '
Für den angegebenen Dateitypen ist kein ausführbares Programm verfügbar.';
SPATH_NOT_FOUND = '
Der angegebene Pfad "%s" konnte nicht gefunden werden.';
SEXE_INVALID = '
Das ausführbare Programm ist keine gültige Win32-Anwendung.';
function GetExecutable(
const AFileName:
string):
string;
var
FileName, Directory:
string;
begin
FileName := ExtractFileName(AFileName);
Directory := ExtractFilePath(AFileName);
Setlength(Result, MAX_PATH);
FillChar(Pointer(Result)^, Length(Result), #0);
case FindExecutable(Pointer(FileName), Pointer(Directory), Pointer(Result))
of
0: OutOfMemoryError;
31: MessageDlg(SNO_ASSOCIATED_EXE, mtError, [mbOk], 0);
ERROR_FILE_NOT_FOUND: MessageDlg(Format(SFILE_NOT_FOUND, [FileName]),
mtError, [mbOk], 0);
ERROR_PATH_NOT_FOUND: MessageDlg(Format(SPATH_NOT_FOUND, [Directory]),
mtError, [mbOk], 0);
ERROR_BAD_FORMAT: MessageDlg(SEXE_INVALID, mtError, [mbOk], 0);
end;
Setlength(Result, StrLen(Pointer(Result)));
end;