TWebbrowser / TEmbeddedWb:隐藏所有消息框

时间:2014-12-11 11:47:33

标签: delphi twebbrowser tembeddedwb

我有一个使用TEmbeddedWb自动执行数据报废任务的应用程序。

当我的应用导航到某些网站时会显示消息/弹出框,这会使流程变慢。

我想阻止TWebbrowser可以显示的任何消息框。

我已经将'silent'属性设置为true,并且还将onshowmessage方法设置如下,但仍然显示消息框。任何提示?

 function TForm1.webShowMessage(Sender: TObject; HWND: Cardinal; lpstrText,
 lpstrCaption: PWideChar; dwType: Integer; lpstrHelpFile: PWideChar; dwHelpContext: Integer;
 var plResult: Integer): HRESULT;
 begin
 plresult := S_OK;
 end;

1 个答案:

答案 0 :(得分:0)

我可以通过对TEmbeddedWb源进行一些更改来实现这些任务,特别是在函数下面:

 procedure TEmbeddedWB.HandleDialogBoxes(var AMsg: Messages.TMessage);

这是改变:

 DlgClss := GetWinClass(PopHandle);
 WinClss := GetWinClass(Windows.GetParent(PopHandle));
 DlgCaption := GetWinText(PopHandle);
 if (DlgClss = 'Internet Explorer_TridentDlgFrame') or ((DlgClss = '#32770'))
   // comment here to make all windows be evaluated
   {and (WinClss <> 'TApplication') and
   (FindControl(Windows.GetParent(PopHandle)) = nil))}
   then
 begin
   if (WinClss = 'TApplication') or (FindControl(Windows.GetParent(PopHandle)) <> nil) then
     begin
     if pos('web browser',lowercase(DlgCaption)) = 0 then
       exit;
     end;