You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止WinHttp.WinHttpRequest.Send弹出运行时错误弹窗?

解决Inno Setup中WinHttp请求弹出错误弹窗的问题

可以实现自行处理错误、避免弹窗。问题根源是WinHttp.WinHttpRequest默认会触发系统级错误对话框,只需通过设置其Option属性禁用该行为,就能让错误被代码中的try-except块捕获处理。

具体做法是在调用Send()前,添加一行代码禁用错误弹窗:

request.Option(6) := 0;

这里的数值6对应WinHttpRequest的WinHttpRequestOption_EnableHttpErrorDialogs选项,0表示禁用弹窗。

修改后的完整代码如下:

function HttpGet(url: string): string;
var
  request: variant;
begin
  result := '';
  try
    request := CreateOleObject('WinHttp.WinHttpRequest.5.1');
    // 禁用WinHttp自动弹出的错误对话框
    request.Option(6) := 0;
    request.Open('GET', url, false);

    request.Send();

    if request.Status = 200 then begin
      Log('Success');
      result := request.ResponseText;
    end else begin
      Log(Format('Failure: HTTP status %d', [request.Status]));
    end;
  except
    Log(Format('Request error: %s', [GetExceptionMessage()]));
  end;
end;

修改后,当服务器地址无法解析、连接失败等网络错误发生时,Send()抛出的异常会被except块捕获,仅会在安装日志中记录错误信息,不会弹出打扰用户的系统弹窗。

内容的提问来源于stack exchange,提问作者Petter Hesselberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 15:22:11