如何阻止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
相关产品推荐
相关产品推荐

