delphi中EmbeddedWB网页html相互调用
2017-10-21 19:45
645 查看
控制自带例子
EmbeddedWB Demos\15 - THTMLListener_Demo
关键方法:HtmlListener1HandlersOnClickHandle
unit uMain;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, Forms,
Dialogs, EwbBehaviorsComp, EwbEventsComp, EwbEvents, OleCtrls, SHDocVw_EWB, MSHTML_EWB, EwbCore,
EmbeddedWB, StdCtrls, ComObj, ActiveX, ExtCtrls;
type
TForm1 = class(TForm)
EmbeddedWB1: TEmbeddedWB;
Panel1: TPanel;
btnEnableDisable: TButton;
lblClickedOnElement: TLabel;
lblElementUndertheMouse: TLabel;
HtmlListener1: THtmlListener;
procedure HtmlListener1HandlersOnClickHandle(Sender: TObject;
Event: IHTMLEventObj);
procedure FormCreate(Sender: TObject);
procedure HtmlListener1HandlersOnMouseMoveHandle(Sender: TObject;
Event: IHTMLEventObj);
procedure EmbeddedWB1DocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
procedure btnEnableDisableClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure EmbeddedWB1BeforeNavigate2(ASender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
private
{ Private declarations }
HubLinksList: TInterfaceList;
FEventsEnabled: Boolean;
HubLink: IHubLink;
procedure DisconnectHtmlListeners;
procedure ConnectHtmlListeners;
procedure ConnectHtmlListener(ASender: TObject; Doc: IHTMLDocument2);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
FEventsEnabled := True;
HubLinksList := TInterfaceList.Create;
EmbeddedWB1.Navigate('www.google.com');
end;
procedure TForm1.HtmlListener1HandlersOnClickHandle(Sender: TObject;
Event: IHTMLEventObj);
begin
lblClickedOnElement.Caption := Format('Clicked on Element with Tag: [%s]', [Event.srcElement.tagName])
end;
procedure TForm1.HtmlListener1HandlersOnMouseMoveHandle(Sender: TObject;
Event: IHTMLEventObj);
begin
lblElementUndertheMouse.Caption := Format('Element under the Mouse [%s]', [Event.srcElement.tagName])
end;
procedure TForm1.DisconnectHtmlListeners;
var
i: Integer;
begin
for i := HubLinksList.Count - 1 downto 0 do
begin
(HubLinksList[i] as IHubLink).Disconnect;
HubLinksList.Remove(HubLinksList[i]);
end;
end;
procedure TForm1.ConnectHtmlListener(ASender: TObject; Doc: IHTMLDocument2);
var
CPC: IConnectionPointContainer;
begin
if Assigned(Doc) then
begin
Doc.QueryInterface(IConnectionPointContainer, CPC);
if Assigned(CPC) then
begin
HubLink := HtmlListener1.Connect2(CPC);
HubLinksList.Add(HubLink);
end;
end;
end;
procedure TForm1.ConnectHtmlListeners;
var
i: Integer;
WB: IWebbrowser2;
HTMLDoc: IHTMLDocument2;
begin
for i := 0 to EmbeddedWB1.FrameCount - 1 do
begin
WB := EmbeddedWB1.GetFrame(i);
if Assigned(WB) then
begin
if Succeeded(WB.Document.QueryInterface(IHTMLDocument2, HTMLDoc)) then
ConnectHtmlListener(nil, HTMLDoc);
end;
end;
end;
procedure TForm1.EmbeddedWB1BeforeNavigate2(ASender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
with ASender as TEmbeddedWB do
if pDisp = DefaultInterface then
begin
DisconnectHtmlListeners;
end;
end;
procedure TForm1.EmbeddedWB1DocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
WB: IWebbrowser;
HTMLDoc: IHTMLDocument2;
begin
if FEventsEnabled then
begin
WB := (pDisp as IWebBrowser);
if Assigned(WB) then
if Succeeded(WB.Document.QueryInterface(IHTMLDocument2, HTMLDoc)) then
ConnectHtmlListener(ASender, HTMLDoc);
end;
end;
procedure TForm1.btnEnableDisableClick(Sender: TObject);
begin
if FEventsEnabled then
begin
DisconnectHtmlListeners;
btnEnableDisable.Caption := 'Enable Events';
FEventsEnabled := False;
end else
begin
ConnectHtmlListeners;
btnEnableDisable.Caption := 'Disable Events';
FEventsEnabled := True;
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
DisconnectHtmlListeners;
HubLinksList.Free;
end;
end.
EmbeddedWB Demos\15 - THTMLListener_Demo
关键方法:HtmlListener1HandlersOnClickHandle
unit uMain;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, Forms,
Dialogs, EwbBehaviorsComp, EwbEventsComp, EwbEvents, OleCtrls, SHDocVw_EWB, MSHTML_EWB, EwbCore,
EmbeddedWB, StdCtrls, ComObj, ActiveX, ExtCtrls;
type
TForm1 = class(TForm)
EmbeddedWB1: TEmbeddedWB;
Panel1: TPanel;
btnEnableDisable: TButton;
lblClickedOnElement: TLabel;
lblElementUndertheMouse: TLabel;
HtmlListener1: THtmlListener;
procedure HtmlListener1HandlersOnClickHandle(Sender: TObject;
Event: IHTMLEventObj);
procedure FormCreate(Sender: TObject);
procedure HtmlListener1HandlersOnMouseMoveHandle(Sender: TObject;
Event: IHTMLEventObj);
procedure EmbeddedWB1DocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
procedure btnEnableDisableClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure EmbeddedWB1BeforeNavigate2(ASender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
private
{ Private declarations }
HubLinksList: TInterfaceList;
FEventsEnabled: Boolean;
HubLink: IHubLink;
procedure DisconnectHtmlListeners;
procedure ConnectHtmlListeners;
procedure ConnectHtmlListener(ASender: TObject; Doc: IHTMLDocument2);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
FEventsEnabled := True;
HubLinksList := TInterfaceList.Create;
EmbeddedWB1.Navigate('www.google.com');
end;
procedure TForm1.HtmlListener1HandlersOnClickHandle(Sender: TObject;
Event: IHTMLEventObj);
begin
lblClickedOnElement.Caption := Format('Clicked on Element with Tag: [%s]', [Event.srcElement.tagName])
end;
procedure TForm1.HtmlListener1HandlersOnMouseMoveHandle(Sender: TObject;
Event: IHTMLEventObj);
begin
lblElementUndertheMouse.Caption := Format('Element under the Mouse [%s]', [Event.srcElement.tagName])
end;
procedure TForm1.DisconnectHtmlListeners;
var
i: Integer;
begin
for i := HubLinksList.Count - 1 downto 0 do
begin
(HubLinksList[i] as IHubLink).Disconnect;
HubLinksList.Remove(HubLinksList[i]);
end;
end;
procedure TForm1.ConnectHtmlListener(ASender: TObject; Doc: IHTMLDocument2);
var
CPC: IConnectionPointContainer;
begin
if Assigned(Doc) then
begin
Doc.QueryInterface(IConnectionPointContainer, CPC);
if Assigned(CPC) then
begin
HubLink := HtmlListener1.Connect2(CPC);
HubLinksList.Add(HubLink);
end;
end;
end;
procedure TForm1.ConnectHtmlListeners;
var
i: Integer;
WB: IWebbrowser2;
HTMLDoc: IHTMLDocument2;
begin
for i := 0 to EmbeddedWB1.FrameCount - 1 do
begin
WB := EmbeddedWB1.GetFrame(i);
if Assigned(WB) then
begin
if Succeeded(WB.Document.QueryInterface(IHTMLDocument2, HTMLDoc)) then
ConnectHtmlListener(nil, HTMLDoc);
end;
end;
end;
procedure TForm1.EmbeddedWB1BeforeNavigate2(ASender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
with ASender as TEmbeddedWB do
if pDisp = DefaultInterface then
begin
DisconnectHtmlListeners;
end;
end;
procedure TForm1.EmbeddedWB1DocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
WB: IWebbrowser;
HTMLDoc: IHTMLDocument2;
begin
if FEventsEnabled then
begin
WB := (pDisp as IWebBrowser);
if Assigned(WB) then
if Succeeded(WB.Document.QueryInterface(IHTMLDocument2, HTMLDoc)) then
ConnectHtmlListener(ASender, HTMLDoc);
end;
end;
procedure TForm1.btnEnableDisableClick(Sender: TObject);
begin
if FEventsEnabled then
begin
DisconnectHtmlListeners;
btnEnableDisable.Caption := 'Enable Events';
FEventsEnabled := False;
end else
begin
ConnectHtmlListeners;
btnEnableDisable.Caption := 'Disable Events';
FEventsEnabled := True;
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
DisconnectHtmlListeners;
HubLinksList.Free;
end;
end.
相关文章推荐
- [Html&JS] 一个网页上,不同的子父窗口iframe之间如何相互调用
- delphi中WEBBrowser网页html相互调用(一)
- delphi中EmbeddedWB网页html相互调用(二)
- 如何通过Html网页调用本地安卓app?
- iOS 基于JavaScriptCore 不等webView加载完毕就交互,网页获取原生内容。 webView的高级用法之JS交互,js与oc的相互调用
- Android 使用html做UI的方法---js与java的相互调用
- Android原生WebView与网页js相互调用
- C#winform后台代码与HTML内JS脚本函数相互调用
- QT调用打印机打印html网页及文件
- html网页调用本地exe程序的实现方法
- 通过Html网页调用本地安卓(android)app
- 1.C#开发winform 开发调运检疫离线制证功能。调用cLodop打印控件(NVelocity模块,生成HTML(包含cLodop打印控件的js),使用WebBrowser,展现网页)总结
- 如何通过Html网页调用本地安卓app?
- 在html页面中调用asp网页
- Silverlight js html 相互调用
- Android加载网页JavaScript与Java之间的相互调用
- 如何通过Html网页调用本地安卓app?
- HTML 网页中以超链接的方式调用iphone 手机的app
- 积少成多Flash(8) - ActionScript 3.0 网页之获取参数,JavaScript与ActionScript之间的相互调用
- iOS 加载HTML的相关问题(与JS的互相调用和WKWebView加载本地网页)