Ich habe meinen Code folgendermaßen erweitert:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
fn : string;
res : integer;
begin
fn := 'http://www.delphipraxis.net/';
res := ShellExecute(0, 'open', PChar(fn), '', '', SW_NORMAL);
ShowMessage(Format('ShellExecute = %d', [res]));
end;
Wenn ich der Firewall den Internet-Zugang erlaube, erscheint nach dem ShellExecute wie erwartet eine Meldung. Wenn ich den Internet-Zugang aber verbiete, hängt die Routine im ShellExecute-Aufruf, die Meldung erscheint gar nicht. Das Programm kann aber im wesentlichen noch bedient werden (bis auf das Schließen und Navigation per Tab). Offenbar kriegt ShellExecute davon nichts mit, dass der Internet-Zugang nicht möglich ist, und versucht weiterhin, ins Netz zu kommen.