Wenn mit ShellExecute eine Datei geöffnet werden soll, für die kein verknüpftes Programm existiert wurde bisher immer eine 31 (SE_ERR_NOASSOC) zurückgegeben. Das war jahrelang so. Nun habe ich entdeckt, dass die Funktion statt der 31 eine 42 zurückgibt (Win7, 32bit). Warum? Die Doku von MS kennt davon nichts. Kann das mal bitte jemand testen?
Delphi-Quellcode:
//uses ShellAPI
var
FileName: string;
begin
FileName := 'E:\blubb.xyz';
if not FileExists(FileName) then
MessageDlg('Datei exisitert nicht', mtError, [mbOK], 0)
else
showmessage(IntToStr(ShellExecute(0, nil, @FileName[1], nil, nil, 1)));
end;