• 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接口,重写了弹出消息的方法。

  • 相关阅读:
    工作之:oracle 11g deferred_segment_creation段延迟创建(转载他人)
    工作之:数据库锁表问题
    工作之:weblogic的url 使用weblogic连接RAC数据库的方式配置如下
    Oracle和Mysql的区别 转载
    关于fastjson的一些知识
    进程和线程的区别 转载
    同一进程中的线程共享的资源有哪些 转载
    2015-04-20一些知识点
    Java中String类型详解
    2015-04-14一些知识点
  • 原文地址:https://www.cnblogs.com/delphi7456/p/5349619.html
Copyright © 2020-2023  润新知