Я использовал ShellExecute
, чтобы открыть URL-адреса в браузере, вызванные из кода модальных окон, например:
procedure TfmAbout1.BtnHomePageClick(Sender: TObject);
begin
inherited;
if ConnectedToWeb then
ShellExecute(Handle, 'open', URL_PRODUCT_HOMEPAGE, nil, nil, SW_SHOWNORMAL);
end;
Но на машинах с брандмауэром Zone Alarm пользователь может получить всплывающее окно, чтобы разрешить или запретить моему приложению доступ к Интернету. Когда пользователь нажимает «Запретить», ShellExecute
никогда не возвращается ... мое приложение затем зависает, и процесс должен быть остановлен извне (т. Е. Из диспетчера задач).
Что я могу сделать, чтобы предвидеть или предотвратить это? Мне нужно что-то вроде ShellExecute
, которое не блокирует в этой ситуации.
Буду признателен за любые идеи.