试试除了inno设置中的bug

时间:2014-09-18 08:08:24

标签: inno-setup

在我的代码中,我希望发送http请求并在fiddler中显示它 - WinHttpReq.SetProxy(2, '127.0.0.1:8888');如果小提琴已经启动,

如果fiddler失败了,请把它变成小提琴手,我用这种方式尝试try..except

[Setup] AppName=Test AppVersion=1.5 DefaultDirName={pf}\test 

[Code] 
var 
WinHttpReq: Variant; 
function ShowInFiddler(Param: String): String;
begin 
try
 WinHttpReq.SetProxy(2, '127.0.0.1:8888'); 
except  MsgBox('Hello.', mbInformation, MB_OK); 
end;
 end;  
function InitializeSetup(): Boolean; 
begin 
WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1'); 
WinHttpReq.Open('GET', 'http://publishers-xxxx.databssint.com/', false); 
ShowInFiddler ('');  
WinHttpReq.Send(); end;

但例外不起作用,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

这不是Inno Setup中的错误,因为SetProxy函数不会检查代理是否可用。如果用错误的参数调用它,该函数将引发异常。 因此,如果您的代理已关闭,您应该捕获Send函数的例外,例如使用continue的默认代理设置。

例如:

var 
  WinHttpReq: Variant;

function InitializeSetup(): Boolean;
begin 
  WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1'); 
  WinHttpReq.Open('GET', 'http://publishers-xxxx.databssint.com/', false);
  WinHttpReq.SetProxy(2, '127.0.0.1:8888');
  try
    // first try connecting via given proxy
    WinHttpReq.Send();
  except
    // proxy failed, use default settings
    WinHttpReq.SetProxy(0);
    try
      WinHttpReq.Send();
      Result := true;
    except
      // conncetion failed, handle error here
      ShowExceptionMessage();
    end;
  end;
end;

请注意,默认情况下,调试程序将暂停(代理已关闭)。这不会在运行时发生。 希望它有所帮助。