日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

给 TWebBrowser.Document 定义事件

發布時間:2023/11/30 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 给 TWebBrowser.Document 定义事件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(該代碼來自國外網站, 給 "神奇的科比" 參考)

代碼:
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, OleCtrls, SHDocVw, MSHTML, ActiveX, StdCtrls;typeTObjectProcedure = procedure of object;TEventObject = class(TInterfacedObject, IDispatch)privateFOnEvent: TObjectProcedure;protectedfunction GetTypeInfoCount(out Count: Integer): HResult; stdcall;function GetTypeInfo(index, LocaleID: Integer; out TypeInfo): HResult; stdcall;function GetIDsOfNames(const IID: TGUID; Names: Pointer; NameCount, LocaleID: Integer;DispIDs: Pointer): HResult; stdcall;function Invoke(dispid: Integer; const IID: TGUID; LocaleID: Integer; Flags: Word;var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;publicconstructor Create(const OnEvent: TObjectProcedure);property OnEvent: TObjectProcedure read FOnEvent write FOnEvent;end;TForm1 = class(TForm)WebBrowser1: TWebBrowser;Memo1: TMemo;procedure WebBrowser1BeforeNavigate2(ASender: TObject; const pDisp: IDispatch;var URL, Flags, TargetFrameName, PostData, Headers: OleVariant;var Cancel: WordBool);procedure WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch;var URL: OleVariant);procedure FormCreate(Sender: TObject);privateprocedure Document_OnMouseOver;public{ Public declarations }end;varForm1: TForm1;htmlDoc: IHTMLDocument2;implementation{$R *.dfm}procedure TForm1.Document_OnMouseOver;varelement: IHTMLElement;beginif htmlDoc = nil thenExit;element := htmlDoc.parentWindow.event.srcElement;Memo1.Clear;if LowerCase(element.tagName) = 'a' thenbeginMemo1.Lines.Add('LINK info...');Memo1.Lines.Add(Format('HREF : %s', [element.getAttribute('href', 0)]));endelse if LowerCase(element.tagName) = 'img' thenbeginMemo1.Lines.Add('IMAGE info...');Memo1.Lines.Add(Format('SRC : %s', [element.getAttribute('src', 0)]));endelsebeginMemo1.Lines.Add(Format('TAG : %s', [element.tagName]));end;end; (* Document_OnMouseOver *)procedure TForm1.FormCreate(Sender: TObject);beginWebBrowser1.Navigate('http://del.cnblogs.com');Memo1.Clear;Memo1.Lines.Add('Move your mouse over the document...');end; (* FormCreate *)procedure TForm1.WebBrowser1BeforeNavigate2(ASender: TObject; const pDisp: IDispatch;var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool);beginhtmlDoc := nil;end; (* WebBrowser1BeforeNavigate2 *)procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch;var URL: OleVariant);beginif Assigned(WebBrowser1.Document) thenbeginhtmlDoc := WebBrowser1.Document as IHTMLDocument2;htmlDoc.onmouseover := (TEventObject.Create(Document_OnMouseOver) as IDispatch);end;end; (* WebBrowser1DocumentComplete *){ TEventObject }constructor TEventObject.Create(const OnEvent: TObjectProcedure);begininherited Create;FOnEvent := OnEvent;end;function TEventObject.GetIDsOfNames(const IID: TGUID; Names: Pointer;NameCount, LocaleID: Integer; DispIDs: Pointer): HResult;beginResult := E_NOTIMPL;end;function TEventObject.GetTypeInfo(index, LocaleID: Integer; out TypeInfo): HResult;beginResult := E_NOTIMPL;end;function TEventObject.GetTypeInfoCount(out Count: Integer): HResult;beginResult := E_NOTIMPL;end;function TEventObject.Invoke(dispid: Integer; const IID: TGUID; LocaleID: Integer;Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult;beginif (dispid = DISPID_VALUE) thenbeginif Assigned(FOnEvent) thenFOnEvent;Result := S_OK;endelseResult := E_NOTIMPL;end;end.
窗體:
object Form1: TForm1Left = 0Top = 0Caption = 'Form1'ClientHeight = 375ClientWidth = 643Color = clBtnFaceFont.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -11Font.Name = 'Tahoma'Font.Style = []OldCreateOrder = FalseOnCreate = FormCreatePixelsPerInch = 96TextHeight = 13object WebBrowser1: TWebBrowserLeft = 0Top = 73Width = 643Height = 302Align = alClientTabOrder = 0OnBeforeNavigate2 = WebBrowser1BeforeNavigate2OnDocumentComplete = WebBrowser1DocumentCompleteExplicitLeft = 264ExplicitTop = 200ExplicitWidth = 300ExplicitHeight = 150ControlData = {4C00000075420000361F00000000000000000000000000000000000000000000000000004C000000000000000000000001000000E0D057007335CF11AE6908002B2E126208000000000000004C0000000114020000000000C000000000000046800000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000}endobject Memo1: TMemoLeft = 0Top = 0Width = 643Height = 73Align = alTopLines.Strings = ('Memo1')TabOrder = 1end end
給 "神奇的科比" 改的識別第一個框架的代碼:
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, OleCtrls, SHDocVw, MSHTML, ActiveX, StdCtrls;typeTObjectProcedure = procedure of object;TEventObject = class(TInterfacedObject, IDispatch)privateFOnEvent: TObjectProcedure;protectedfunction GetTypeInfoCount(out Count: Integer): HResult; stdcall;function GetTypeInfo(index, LocaleID: Integer; out TypeInfo): HResult; stdcall;function GetIDsOfNames(const IID: TGUID; Names: Pointer; NameCount, LocaleID: Integer;DispIDs: Pointer): HResult; stdcall;function Invoke(dispid: Integer; const IID: TGUID; LocaleID: Integer; Flags: Word;var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;publicconstructor Create(const OnEvent: TObjectProcedure);property OnEvent: TObjectProcedure read FOnEvent write FOnEvent;end;TForm1 = class(TForm)WebBrowser1: TWebBrowser;Memo1: TMemo;procedure WebBrowser1BeforeNavigate2(ASender: TObject; const pDisp: IDispatch;var URL, Flags, TargetFrameName, PostData, Headers: OleVariant;var Cancel: WordBool);procedure WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch;var URL: OleVariant);procedure FormCreate(Sender: TObject);privateprocedure Document_OnMouseOver;public{ Public declarations }end;varForm1: TForm1;htmlDoc: IHTMLDocument2;implementation{$R *.dfm}procedure TForm1.Document_OnMouseOver;varelement: IHTMLElement;beginif htmlDoc = nil thenExit;element := htmlDoc.parentWindow.event.srcElement;Memo1.Clear;if LowerCase(element.tagName) = 'a' thenbeginMemo1.Lines.Add('LINK info...');Memo1.Lines.Add(Format('HREF : %s', [element.getAttribute('href', 0)]));endelse if LowerCase(element.tagName) = 'img' thenbeginMemo1.Lines.Add('IMAGE info...');Memo1.Lines.Add(Format('SRC : %s', [element.getAttribute('src', 0)]));endelsebeginMemo1.Lines.Add(Format('TAG : %s', [element.tagName]));end;end; (* Document_OnMouseOver *)procedure TForm1.FormCreate(Sender: TObject);beginWebBrowser1.Navigate('http://passport.csdn.net/UserLogin.aspx');Memo1.Clear;Memo1.Lines.Add('Move your mouse over the document...');end; (* FormCreate *)procedure TForm1.WebBrowser1BeforeNavigate2(ASender: TObject; const pDisp: IDispatch;var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool);beginhtmlDoc := nil;end; (* WebBrowser1BeforeNavigate2 *)procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch;var URL: OleVariant);beginif Assigned(WebBrowser1.Document) thenbeginhtmlDoc := WebBrowser1.Document as IHTMLDocument2;if htmlDoc.frames.length > 0 thenbeginhtmlDoc := (IDispatch(htmlDoc.frames.item(0)) as IHTMLWindow2).Document;end;htmlDoc.onmouseover := (TEventObject.Create(Document_OnMouseOver) as IDispatch);end;end; (* WebBrowser1DocumentComplete *){ TEventObject }constructor TEventObject.Create(const OnEvent: TObjectProcedure);begininherited Create;FOnEvent := OnEvent;end;function TEventObject.GetIDsOfNames(const IID: TGUID; Names: Pointer;NameCount, LocaleID: Integer; DispIDs: Pointer): HResult;beginResult := E_NOTIMPL;end;function TEventObject.GetTypeInfo(index, LocaleID: Integer; out TypeInfo): HResult;beginResult := E_NOTIMPL;end;function TEventObject.GetTypeInfoCount(out Count: Integer): HResult;beginResult := E_NOTIMPL;end;function TEventObject.Invoke(dispid: Integer; const IID: TGUID; LocaleID: Integer;Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult;beginif (dispid = DISPID_VALUE) thenbeginif Assigned(FOnEvent) thenFOnEvent;Result := S_OK;endelseResult := E_NOTIMPL;end;end.

轉載于:https://www.cnblogs.com/del/archive/2010/03/04/1678550.html

總結

以上是生活随笔為你收集整理的给 TWebBrowser.Document 定义事件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色呦呦一区二区 | 高清av不卡| 日本视频www | 理论片在线观看理伦片 | 亚洲精品久久久久久动漫器材一区 | 国产网站在线看 | 国内爆初菊对白视频 | 在线观看视频毛片 | 四虎新网站| 99久久久无码国产精品不卡 | 久久免费一区 | wwwxxx色| 日韩欧美亚洲一区二区三区 | 午夜电影一区二区 | 日本在线不卡一区 | 在线观看日韩一区二区 | 韩漫动漫免费大全在线观看 | 精品麻豆一区二区 | 欧美亚洲在线视频 | 久草福利资源站 | 国产精品无码久久久久一区二区 | 黑人操亚洲美女 | 香蕉久久久久久久av网站 | www.五月激情 | 狠久久 | 日韩黄色片子 | 免费观看理伦片在线播放视频软件 | 天天天干干干 | 制服.丝袜.亚洲.中文.综合 | 久久久久久久久久电影 | 动漫女被黄漫免费视频 | 黄色3级视频 | 中文精品无码中文字幕无码专区 | 日韩一区欧美一区 | 少妇在线 | 91九色国产ts另类人妖 | 在线观看亚洲大片短视频 | 女同性αv亚洲女同志 | 亚洲插插 | 久久久久久久久综合 | 中国美女一级看片 | 成人国产在线观看 | www.国产麻豆| 国产性猛交 | 操欧美老逼 | 久草综合在线视频 | www.欧美色图 | 丰满岳跪趴高撅肥臀尤物在线观看 | www.猫咪av.com| 高潮一区二区三区乱码 | 国产精品久久久久久久成人午夜 | 在线看一区 | 久久男人av | 国产毛片a级 | 欧美一区二区三区四区在线 | 精品一区在线看 | 天天插天天摸 | 欧美另类视频 | 日韩黄色影视 | 99精品一区二区 | 小蝌蚪av | 九色国产视频 | 日本一道在线 | 精品动漫一区二区三区在线观看 | 国产又粗又硬 | 九九热在线视频免费观看 | 日韩美女中文字幕 | 日本欧美韩国国产精品 | 精品国产一区二区三区无码 | 日韩二区在线 | 亚洲AV成人无码久久 | 狂躁美女大bbbbbb黑人 | 午夜福利电影一区 | 国产xxxx性hd极品 | 亚洲无av| 护士人妻hd中文字幕 | 天天做天天爱天天操 | 特黄在线 | 91欧美日韩| 国产激情在线看 | www日本xxx| 国产99视频在线 | 自拍偷拍欧美日韩 | 亚洲男同视频 | 国产亚洲欧美一区二区三区 | 欧美高清性xxxxhdvideosex | 日韩啪| 一本色道久久综合狠狠躁的推荐 | 影音先锋在线视频 | 熟女视频一区二区三区 | 91精品国产色综合久久不卡粉嫩 | 精品在线视频一区二区 | 在线一区二区三区四区五区 | 在线观看黄色小视频 | 国产精品国产三级国产普通话对白 | 欧美日韩激情视频 | 午夜少妇视频 | 国产精品天堂 | wwwyoujizz日本 |