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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

定制IE浏览器的尖兵利器 - BHO

發布時間:2024/8/24 HTML 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 定制IE浏览器的尖兵利器 - BHO 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? IE瀏覽器是當前使用人數最廣的瀏覽器, 本文主要來講述如何來打造我們自己特色的瀏覽器, 自定義工具欄按鈕, 自定義網頁的右擊菜單, BHO技術與IE瀏覽器. 本文寫作過程中參考不少網絡上的相關資料, 我將在最后的參考資料中列出這些文章.

自定義工具欄按鈕

我們經常看到迅雷, 網際快車(FlashGet)等軟件安裝后會向IE的工具條添加自己的按鈕。按下按鈕后還會作出相應的動作,這種功能是如何實現的呢?

基本原理:
從IE5開始便允許我們向工具欄添加自己的按鈕,其本質就是修改注冊表,添加創建此按鈕所需的信息。


實現步驟:
1.創建此按鈕的GUID(globally unique identifier)
你可以通過Visual Studio中的Guidgen.exe來產生GUID。
例如我生成的GUID是{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}
以下的例子中我都使用這個GUID來作說明。


2.創建子鍵HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions\{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}


3.在此子鍵下創建如下字串值。
(1)CLSID
這是IE的CLSID,其值必須為{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}
(2)Default Visible
指明此按鈕默認狀態下是否可見,Yes表示可見,No為不可見
(3)ButtonText
按鈕文字
(4)Icon
默認狀態下的圖標全路徑,例如c:\vckbase.ico。也可以是EXE文件中包含的圖標,例如:C:\PROGRA~1\NETANTS\NetAnts.exe,1000(后面的1000是指EXE文件中該圖標文件對應的資源ID)
(5)HotIcon
鼠標移到按鈕上時的圖標全路徑

?

如下子鍵為按下按鈕后需要執行的相應動作:可以是COM對象、瀏覽條Explorer Bar、腳本Script、可執行文件。
下面我們逐個進行介紹。


①COM對象
你需要建立名為ClsidExtension的字串值,其值應該為此COM對象的GUID
例如金山詞霸就使用ClsidExtension來調用自己的COM對象。


②瀏覽條Explorer Bar
所謂瀏覽條就是類似我們按下往IE歷史按鈕后打開的歷史記錄列表,其本質好比MFC中的CReBar對象。 瀏覽條也可以自己制作,
因為超出了本文的范圍,暫不作講解。?
為了在按下按鈕后打開一個瀏覽條,你需要建立名為BandCLSID的字串值,其值為瀏覽條的CLSID


③腳本Script
按下按鈕后執行的腳本,例如:"%SystemRoot%\web\related.htm"
你可以在這個HTML文件里面加上腳本來得到IE當前的許多信息,需要注意的是假如你想通過Script打開非腳本的HTML文件是不可行的。

?

④可執行文件
假如我們想讓IE在按下按鈕后執行一個可執行文件, 你可以增加名為Exec的字串值,其值為此可執行文件的全路徑,
例如c:\windows\notepad.exe或者是一個網址如http://wwww.cnblogs.com?. 最終效果如下

?

?

自定義網頁的右擊菜單

我們經常看到頁面右擊菜單中的如迅雷下載所有鏈接, 百度搜藏, 乃至到收藏此頁到【博客園網摘】; 這些是如何實現的呢? 其實很簡單, 一句話修改注冊表即可.

一、在IE菜單中加入菜單項
在注冊表HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt項下建立一個新項,項的名稱即為出現在菜單中的標題
將新建項的默認值設定為一個URL地址,當用戶點擊菜單項后,IE就會調用URL指向的頁面中的腳本。舉例說明, 收藏此頁到【博客園網摘】中其URL地址:http://wz.cnblogs.com/rightclick/, 對應頁面就簡單一個JavaScript腳本, 大家如果感興趣可以查看一下其源代碼內容.

二、如何控制菜單項在合適的時候顯示
下面再介紹一下上面注冊項中Contexts項的作用,通過該項可以制定菜單項在右鍵點擊IE中的什么對象時出現,它可以為以下的值或其組合值

對象
缺省CONTEXT_MENU_DEFAULT0x1
圖片CONTEXT_MENU_IMAGE0x2
控件CONTEXT_MENU_CONTROL0x4
表單域0x8
選擇文本CONTEXT_MENU_TEXTSELECT0x10
錨點CONTEXT_MENU_ANCHOR0x20
超鏈接0x22
右鍵點擊網頁中除上以外的地方顯示該項 CONTEXT_MENU_UNKNOWN0x40

?

例如上面我們希望菜單項在用戶點擊圖片或者超鏈接時出現,那么我們就將值設置為

dword:00000022

既在點擊圖片 或者 錨點時出現菜單。一個錨點是頁面中描述一個超鏈接的對象。如果不設置Contexts 項,則菜單項會在點擊任何對象時出現在右鍵菜單中。收藏此頁到博客園網摘功能就是缺省設置.

?

BHO

BHO(瀏覽器輔助對象)是一種簡單的ATL COM對象,而Internet Explorer會在每次運行時都加載它;換句話來說,即每個Internet Explorer的實例都會加載它。BHO運行在Internet Explorer的地址空間內,能對可訪問的對象(如窗口、模塊等等)執行任何操作,且因為它依附于瀏覽器的主窗口,所以其生命期與瀏覽器實例的生命期一致。

  如果在系統中打開了活動桌面,BHO也能隨同Windows Explorer一起啟動。如果不想在Windows Explorer中運行BHO,可將如下代碼添加到DLLMain中:

TCHAR strLoader[MAX_PATH];

::GetModuleFileName (NULL, strLoader, MAX_PATH);
if(stricmp("explorer.exe", strLoader) == 0)
return FALSE;

  BHO的COM Server必須實現IObjectWithSite,以便對象可以掛鉤到瀏覽器事件,Internet Explorer會依靠IObjectWithSite將一個指針傳遞到它的IUnknown接口,所以,只需實現IObjectWithSite的SetSite方法就行了.

?

參考瀏覽器幫助程序對象

http://msdn.microsoft.com/library/techart/bho.htm

IWebBrowser2::ShowBrowserBar 方法

http://msdn.microsoft.com/workshop/browser/webbrowser/reference/IFaces/IWebBrowser2/ShowBrowserBar.asp

Browser Helper Objects: The Browser the Way You Want It

如何使用BHO定制你的Internet Explorer瀏覽器

IHTMLSelectionObject2 Interface

http://msdn.microsoft.com/en-us/library/aa768843(VS.85).aspx

ActiveX Security: Improvements and Best Practices

http://msdn.microsoft.com/en-us/library/bb250471(VS.85).aspx#psd

Building Browser Helper Objects with Visual Studio 2005

http://msdn.microsoft.com/en-us/library/bb250489(VS.85).aspx

BHO,好厲害的東東

VC++開發BHO插件——定制你的瀏覽器  作者 陸其明

轉載于:https://www.cnblogs.com/mvc2014/p/3775987.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的定制IE浏览器的尖兵利器 - BHO的全部內容,希望文章能夠幫你解決所遇到的問題。

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