Delphi中WebBrowser拦截网页Alert对话框消息

interface 
   
uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  Dialogs, OleCtrls, SHDocVw, ActiveX;  
   
type 
  IDocHostShowUI = interface(IUnknown)  
    ['{c4d244b0-d43e-11cf-893b-00aa00bdce1a}']  
    function ShowMessage(hwnd: THandle; lpstrText: POLESTR; lpstrCaption: POLESTR;dwType: longint; lpstrHelpfile: POLESTR; dwHelpContext: longint;var plResult: LRESULT): HRESULT; stdcall;  
    function ShowHelp(hwnd: THandle; pszHelpfile: POLESTR; uCommand: integer;dwData: longint; ptMouse: TPoint; var pDispatchObjectHit: IDispatch): HRESULT; stdcall;  
  end;  
   
  TWebBrowser = class(SHDocVw.TWebBrowser,IDocHostShowUI)  
  protected 
    function ShowMessage(hwnd: THandle; lpstrText: POLESTR; lpstrCaption: POLESTR;dwType: longint; lpstrHelpfile: POLESTR; dwHelpContext: longint;var plResult: LRESULT): HRESULT; stdcall;  
    function ShowHelp(hwnd: THandle; pszHelpfile: POLESTR; uCommand: integer;dwData: longint; ptMouse: TPoint; var pDispatchObjectHit: IDispatch): HRESULT; stdcall;  
  end;  
   
   
type 
  TForm1 = class(TForm)  
    WebBrowser1: TWebBrowser;  
    procedure FormCreate(Sender: TObject);  
  private 
    { Private declarations } 
  public 
    { Public declarations } 
  end;  
   
var 
  Form1: TForm1;  
   
implementation 
   
{$R *.dfm} 
   
{ TWebBrowser } 
   
function TWebBrowser.ShowHelp(hwnd: THandle; pszHelpfile: POLESTR; uCommand,  
  dwData: Integer; ptMouse: TPoint; var pDispatchObjectHit: IDispatch): HRESULT;  
begin 
  Result := S_FALSE;  
end;  
   
function TWebBrowser.ShowMessage(hwnd: THandle; lpstrText,  
  lpstrCaption: POLESTR; dwType: Integer; lpstrHelpfile: POLESTR;  
  dwHelpContext: Integer; var plResult: LRESULT): HRESULT;  
begin 
  //plResult := MessageBoxW(hwnd,PWChar(lpstrText),'Title',64);//这里屏蔽了alert  
  Result := S_OK;  
end;  
   
procedure TForm1.FormCreate(Sender: TObject);  
begin 
  WebBrowser1.Navigate('E:/alert.htm');  
end;  
   
end.

方法是实现了IDocHostShowUI接口,重写了弹出消息的方法。

你可能感兴趣的:(Delphi中WebBrowser拦截网页Alert对话框消息)