• 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
     
  • 相关阅读:
    Android属性动画之ValueAnimation
    Android属性动画之第一重修炼总结
    Android属性动画之ObjectAnimator控制
    Android属性动画之ObjectAnimator
    HDU 4334——Trouble——————【贪心&水题】
    HDU 5416——CRB and Tree——————【DFS搜树】
    HDU 4323——Magic Number——————【dp求编辑距离】2012——MUT——3
    HDU 5384——Danganronpa——————【AC自动机】
    HDU——Cover——————【技巧】
    CF 540D——Bad Luck Island——————【概率dp】
  • 原文地址:https://www.cnblogs.com/findumars/p/5037632.html
Copyright © 2020-2023  润新知