国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

瀏覽器輔助對(duì)象技術(shù)的應(yīng)用與設(shè)計(jì)方法

2012-12-28 12:32李華偉
關(guān)鍵詞:注冊(cè)表網(wǎng)址瀏覽器

李華偉 李 芹 王 瑜

(泰安市中心醫(yī)院信息中心,山東 泰安 271000)

瀏覽器輔助對(duì)象技術(shù),全稱Browser Helper Object,以下簡(jiǎn)稱BHO,就是我們常說(shuō)的IE瀏覽器插件。它是微軟推出的作為瀏覽器對(duì)第三方程序員開放交互接口的業(yè)界標(biāo)準(zhǔn),利用BHO的交互接口,就可以在加載IE瀏覽器的同時(shí)進(jìn)行相應(yīng)的IE控制處理或加載其它程序,實(shí)現(xiàn)與IE瀏覽器的交互。本文通過(guò)VB的實(shí)際開發(fā)案例,提供了VB利用BHO開發(fā)相關(guān)程序的核心代碼,通過(guò)簡(jiǎn)單的演示,為開發(fā)者提供一種開發(fā)思路。

1 BHO的簡(jiǎn)介與實(shí)現(xiàn)原理

BHO的目的是為了更好的幫助程序員打造個(gè)性化瀏覽器,以及為程序提供更簡(jiǎn)潔的交互功能,現(xiàn)在很多IE個(gè)性化工具就是利用BHO的來(lái)實(shí)現(xiàn)。符合BHO接口標(biāo)準(zhǔn)的程序代碼被寫為DLL動(dòng)態(tài)鏈接庫(kù)形式在注冊(cè)表里注冊(cè)為COM對(duì)象,還要在BHO接口的注冊(cè)表入口處(即HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerBrowserHelperObjects)進(jìn)行組件注冊(cè),以后每次IE啟動(dòng)時(shí)都會(huì)通過(guò)這里描述的注冊(cè)信息調(diào)用加載這個(gè)DLL文件,而這個(gè)DLL文件就因此成為IE的一個(gè)模塊(BHO組件),與IE共享一個(gè)運(yùn)行周期,直到IE被關(guān)閉。

2 應(yīng)用BHO技術(shù)的開發(fā)案例

下面采用VB6.0來(lái)創(chuàng)建Browser Helper Object,實(shí)現(xiàn)記錄IE瀏覽網(wǎng)址與日期時(shí)間,詳細(xì)過(guò)程與代碼如下:

2.1 打開VB6.0,點(diǎn)擊菜單欄[文件]--[新建工程],在彈出的 [新建工程]頁(yè)面中選擇ActiveX DLL,保存工程為TestBHO.vbp;

2.2 將類模塊中的Class1改名為TestBHO并保存為TestBHO.cls;

2.3 點(diǎn)擊菜單欄[工程]--[引用],選擇引用“VB ShellLibrary”(VBSHELL.TLB)、“Microsoft HTML ObjectLibrary”(MSHTML.TLB)、“Microsoft Internet Controls”(shdocvw.dll);

2.4 在類模塊TestBHO.cls中添加核心接口代碼,實(shí)現(xiàn)與IE的接口,代碼如下:

Option Explicit

Implements IObjectWithSite

PrivateDeclareSub CopyMemory Lib“Kernel32”Alias“RtlMoveMemory”(pDstAs Any,pSrc As Any,ByVal ByteLen As Long)

Private moUnknown As IUnknownVB

Private WithEvents moBrowser As InternetExplorer

記錄網(wǎng)址的文件路徑

Dim mSavePath As String

'加載Dll文件時(shí)初始化變量

Private Sub Class_Initialize()

'將網(wǎng)址記錄到c:ho.txt下

mSavePath="C:ho.txt"

End Sub

Private Sub IObjectWithSite_GetSite(By-Val priid As VBShellLib.REFIID,ppvObj As VBShellLib.VOID)

If Not(moUnknown Is Nothing)Then

moUnknown.QueryInterface priid,ppvObj

End If

End Sub

Private Sub IObjectWithSite_SetSite(By-Val pSite As VBShellLib.IUnknownVB)

Set moUnknown=pSite

If ObjPtr(pSite)=0 Then

CopyMemory moBrowser,0 & ,4

Set moUnknown=Nothing

Set moBrowser=Nothing

Else

Set moBrowser=moUnknown

End If

End Sub

'將字符串聯(lián)寫入指定路徑的文檔

Private Sub WriteTxt(ByValUrlAs String)

Open mSavePath For Append As 1

Print#1,Date$ & "" & Time$ & "" & Url

Close#1

End Sub

'網(wǎng)頁(yè)打開完成時(shí),將上網(wǎng)地址記錄到指定文件

Private Sub moBrowser_DocumentComplete(ByVal pDisp As Object,Url As Variant)

Call WriteTxt(Url)

End Sub

2.5 生成接口dll文件TestBHO.dll并復(fù)制到系統(tǒng)system32目錄下;

2.6 運(yùn)行"regsvr32 TestBHO.dll"注冊(cè)TestBHO.dll文件,然后打開注冊(cè)表,通過(guò)查找TestBHO.dll,找到其CLSID(筆者的 dll文件CLSID為{5B173AEA-A51B-4FB1-89B2-88C7A0D20C9D}),再?gòu)淖?cè)表中找到接口HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerBrowser Helper Objects,在其下新建項(xiàng),項(xiàng)名為TestBHO.dll的CLSID;

2.7 新打開一個(gè)IE瀏覽器,打開幾個(gè)網(wǎng)頁(yè),再查看C:ho.txt文件,是不是已經(jīng)記錄了你瀏覽的網(wǎng)頁(yè)地址,效果如何?

至此,這個(gè)BHO接口已經(jīng)完成,每次新打開一個(gè)IE窗口,都會(huì)加載TestBHO.dll,每打開一個(gè)網(wǎng)頁(yè),都會(huì)將上網(wǎng)日期時(shí)間、網(wǎng)頁(yè)地址記錄到C:ho.txt中,關(guān)閉IE窗口時(shí),TestBHO.dll也會(huì)自動(dòng)關(guān)閉,不再運(yùn)行記錄網(wǎng)址。

3 BHO技術(shù)的應(yīng)用

目前,BHO技術(shù)已經(jīng)廣泛應(yīng)用于互聯(lián)網(wǎng)程序開發(fā)中,實(shí)現(xiàn)的功能也多種多樣,包括網(wǎng)頁(yè)內(nèi)容過(guò)濾、自動(dòng)填單、廣告攔截、上網(wǎng)行為監(jiān)控、網(wǎng)頁(yè)翻譯等功能,大家熟知的軟件像百度工具條、迅雷等工具都利用了BHO技術(shù),甚至很多病毒、木馬、流氓軟件也都利用了這種技術(shù),當(dāng)然,清理它們的殺毒軟件,專殺工具也要利用此技術(shù),所以掌握這種技術(shù)對(duì)相關(guān)程序開發(fā)很有幫助。

本文中的程序僅是實(shí)現(xiàn)BHO接口的一個(gè)簡(jiǎn)單功能的案例,作為一個(gè)接口演示,提供一個(gè)思路,希望起到拋磚引玉的作用,讓大家能做出更多更實(shí)用的程序。

[1]COM/DCOM技術(shù)內(nèi)幕.(美)阿伯內(nèi)西著汪浩等譯.2000.電子工業(yè)出版社.

[2]深入解析Windows操作系統(tǒng).(美)Russinovich,M.E.(美)Solomon,D.A.2007.電子工業(yè)出版社

[3]COM本質(zhì)論.DON BOX.2001.中國(guó)電力出版社

猜你喜歡
注冊(cè)表網(wǎng)址瀏覽器
2023年6月全宅影音器材編輯推薦
本刊網(wǎng)址變更通知
反瀏覽器指紋追蹤
環(huán)球?yàn)g覽器
本刊網(wǎng)址變更通知
本刊網(wǎng)址更改通知
學(xué)習(xí)器揭開注冊(cè)表面紗
大石桥市| 建瓯市| 苏州市| 滕州市| 永安市| 石狮市| 保亭| 万安县| 长子县| 安顺市| 额尔古纳市| 奈曼旗| 唐河县| 扶风县| 萝北县| 米林县| 顺平县| 辽宁省| 榆社县| 怀远县| 漳平市| 平陆县| 略阳县| 安宁市| 凌云县| 会昌县| 扎赉特旗| 东光县| 雷山县| 紫金县| 建阳市| 阳高县| 望谟县| 灯塔市| 通山县| 科技| 南雄市| 玉屏| 宿松县| 繁昌县| 武穴市|