zoukankan      html  css  js  c++  java
  • Delphi的WebBrowser改造,对网页中Alter等对话框的改造方法(通过COM来改造)

    刚有一段时间没做博客了,今天刚好有人问了这个问题,而自己以前也弄过,于是这里有了一篇新的博文。

    关于改造WebBrowser控件的一些技巧,大家可以参考MSDN或者蒋晟写的一个东西,里面有讲的很详细的,今天我就说一下这个alter对话框的修改和过滤的方法:

    很简单,只要咱们继承IDocHostShowUI这个接口,实现里面的ShowMessage方法就行了。

    废话不多说,代码在这里:

    DelphiCode:
    unit Unit2;
    
    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;
    
      TForm2 = class(TForm)
        WebBrowser1: TWebBrowser;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form2: TForm2;
    
    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),'不得闲测试',65);
      Result := S_OK;
    end;
    
    procedure TForm2.FormCreate(Sender: TObject);
    begin
      self.WebBrowser1.Navigate(Application.ExeName + '/../test.htm');
    end;
    
    end.
    
     
    http://blog.csdn.net/suiyunonghen/article/details/3959322
     
  • 相关阅读:
    Linux系统NBD驱动安装拓展篇
    关于测试策略,测试方针,测试计划,测试方案的理解
    IE9 以下版本浏览器兼容HTML5的方法,使用的静态资源的html5shiv包:
    数组实现队列
    Python中的文件夹、包、模块、类、函数
    python单元测试框架pytest 和unittest
    Python语法学习笔记
    Appium遇到的问题
    测试质量体系建设
    运营需求测试点
  • 原文地址:https://www.cnblogs.com/findumars/p/5037632.html
Copyright © 2011-2022 走看看