gpt4 book ai didi

delphi - 当防火墙拒绝 Internet 访问时,ShellExecute 阻止(永不返回)

转载 作者:行者123 更新时间:2023-12-01 02:06:30 25 4
gpt4 key购买 nike

我一直在用ShellExecute在浏览器中打开 URL,从模态窗口的代码调用,如下所示:

procedure TfmAbout1.BtnHomePageClick(Sender: TObject);
begin
inherited;
if ConnectedToWeb then
ShellExecute(Handle, 'open', URL_PRODUCT_HOMEPAGE, nil, nil, SW_SHOWNORMAL);
end;

但是在带有区域警报防火墙的机器上,用户可能会收到一个弹出提示,允许或拒绝我的应用程序访问 Internet。当用户单击“拒绝”时,则 ShellExecute永远不会返回......然后我的应用程序被挂起,并且必须从外部(即从任务管理器)关闭该进程。

我能做些什么来预测或防止这种情况?我需要类似 ShellExecute 的东西在这种情况下是非阻塞的。

我很感激任何想法。

最佳答案

因此,您想解决 Zone Alarm 中的错误吗?

我可能会检查区域警报版本,并根据它,有一个小的“引导”程序代表我执行 ShellExecute。那只会挂起小的 bootstrap 。

如果它在超时后没有返回(15 或 30 秒就可以),您可以终止该 bootstrap (因为您的父进程是所有者)。

您甚至可以警告有错误版本的 Zone Alarm 的用户 :)

编辑:注意:我认为杀死进程比杀死线程更安全。

关于delphi - 当防火墙拒绝 Internet 访问时,ShellExecute 阻止(永不返回),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5851385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com