Delphi中WebBrowser拦截网页Alert对话框消息(转)
2016-04-03 12:44
375 查看
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中Indy 10的安装和老版本的卸载
- delphi7 手动安装 indy10.2.3
- Delphi 高效读写锁
- Delphi 最小化程序到任务栏托盘 增加右键PopMenu
- delphi实现函数/过程
- Delphi开发的数据库程序在C:\PDOXUSRS.NET生成文件,拒绝访问及读写权限
- Delphi自写组件:可设置颜色的按钮(改成BS_OWNERDRAW风格,然后CN_DRAWITEM)
- Delphi透明组件开发(去掉自己的csOpaque,去掉父控件的WS_CLIPCHILDREN,增加WS_EX_TRANSPARENT,截获WM_ERASEBKGND,然后在WM_DRAWITEM里画) good
- Delphi面向对象设计的经验原则(61条)
- Delphi控件的停靠功能
- Delphi默认窗体随想
- Delphi 数据类型列表 good
- Delphi数组复制(只能使用System单元的Move函数)
- Delphi XE中类成员的访问权限(新增了strict private和strict protected,还有automated)
- 解决Delphi MDI 闪烁问题(使用WM_SETREDRAW锁屏后进行处理)
- DelphiXE 显示GIF动画
- 参数传递方法(Delphi1.0与win16API使用pascal方法,即从左到右)
- Delphi中编写无输出函数名的DLL文件(有点意思)(400多篇博客)
- Delphi “Invalid floating point operation.”错误的解决方法(使用System单元提供的Set8087CW函数禁用浮点异常)
- Delphi XE Debug模式编译的EXE体积太大 ??