我循环用webbrowser访问了一个页面,由于这个页面在onunload里写了一个“是否关闭”的确认框,每次访问到这都需要我手动点击确定,如果我没点确定,下次再访问会提示“此资源正在使用中。”,请问能不能在webbrowser里屏蔽这个事件让他不弹出或者自动确认而不需要我手工点击。资源正在使用浏览器

解决方案 »

  1.   

    复制下面函数到你的程序里。function CallBackProc(H, HMainForm: hwnd): Boolean; stdcall;
    var
      hChild: HWND;
    begin
      Result := True;
      if GetParent(H) = HMainForm then
      begin
        hChild := FindWindowEx(H, 0, PChar('Button'), PChar('确定'));
        if hChild > 0 then
          SendMessage(hChild, BM_Click, 0, 0);
      end;
    end;拖一个TTimer到程序上,然后定义其Timer事件如下:
    procedure TfrmMain.tmr1Timer(Sender: TObject);
    begin
      EnumWindows(@CallBackProc, Self.Handle);
    end;时间设定个500就行。出来就自动确定了。
      

  2.   

    单纯屏蔽js的 dialog boxes,可以试试  procedure TForm1.FormCreate(Sender: TObject);
    begin
       wb1.Silent:=True;
    end;
    // 不过这样会屏蔽所有的js弹出的消息框
      

  3.   

    procedure TForm1.WebBrowser1NavigateComplete2(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    begin
      WebBrowser1.OleObject.document.parentWindow.execScript('window.confirm=function(){return true}', 'javascript')
    end;