現(xiàn)在,有許多軟件安裝后會(huì)在 IE 瀏覽器的工具條上添加一個(gè)自定義按鈕,為用戶運(yùn)行程序提供了方便,如“網(wǎng)絡(luò)螞蟻”、“金山詞霸”等等。實(shí)際上添加這個(gè)自定義按鈕并不難,只要找到了它在注冊表中的位置和有關(guān)參數(shù),通過手工或程序都可以輕易完成。而最方便的辦法就是調(diào)用現(xiàn)成的 ActiveX 控件來完成這個(gè)功能,但 Windows 似乎沒有提供這種控件。下面介紹如何開發(fā)和使用這種自定義控件。
實(shí)現(xiàn)方法
要添加這種自定義按鈕,需要在 Windows 注冊表的HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions 子鍵下建立一個(gè) GUID 項(xiàng),然后在注冊表的右欄建立相應(yīng)的參數(shù)并賦值。這些參數(shù)及其含義如下:
ButtonText:自定義按鈕上顯示的文本字符串;
Clsid:IE 工具條的類標(biāo)識(shí)碼,為“{1FBA04EE-3024-11D2-8F1F0000F87ABD16}”;
Default Visible:自定義按鈕是否可見,一般為 “Yes";
Exec:自定義按鈕執(zhí)行的目標(biāo),為可執(zhí)行文件或超文本鏈接等;
HotIcon:鼠標(biāo)移上按鈕時(shí)顯示的圖標(biāo),一般取自 EXE 文件或 DLL 文件;
Icon:按鈕正常顯示的圖標(biāo),一般取自 EXE 文件或 DLL 文件;
MenuText:在 IE 的“工具”菜單中顯示的菜單項(xiàng);
MenuStatusBar:IE的“工具”菜單項(xiàng)的注釋,在狀態(tài)條上顯示。
制作過程
在 VB 5.0/6.0 下建立新的“ActiveX 控件”工程。
首先,給控件 AddButton 的 Picture 屬性添加一個(gè)微型 Icon 圖片,這樣當(dāng)使用該控件時(shí),會(huì)在控件工具箱上顯示這個(gè)小圖標(biāo)。然后,再在設(shè)計(jì)窗口上放置一個(gè) image 控件,給它也設(shè)置一個(gè)小圖片,使用該控件時(shí),會(huì)在其 Form 上顯示該控件的外觀。最后,調(diào)出代碼編輯窗口,在該窗口中鍵入以下代碼,其中 API 函數(shù)調(diào)用的代碼可以直接從“API 文本瀏覽器”中獲得。
’’注意:Guid的值是特定的,才可以獲取
Option Explicit
……’’Default Property Values
……’’Property Variables
’’定義常量
Const HKEY_LOCAL_MACHINE = &H80000002
Const REG_SZ = 1
’’聲明存取注冊表的 API 函數(shù)
Private Declare Function RegCloseKey Lib “advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib “advapi32.dll" Alias “RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegDeleteValue Lib “advapi32.dll" Alias “RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Private Declare Function RegOpenKey Lib “advapi32.dll" Alias “RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib “advapi32.dll" Alias “RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String,ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
’’定義注冊表中的主鍵、子鍵
Const hKey = HKEY_LOCAL_MACHINE
Const subKey0=“Software\Microsoft\Internet Explorer\Extensions\"
’把字符串值存入注冊表
Private Sub SaveString(hKey As Long, strPath As String, strValue As String, strdata As String)
Dim keyhand As Long
Dim r As Long
r=RegCreateKey(hKey, strPath, keyhand)
r=RegSetValueEx(keyhand, strValue, 0,REG_SZ, ByVal strdata, Len(strdata))
r=RegCloseKey(keyhand)
End Sub
實(shí)現(xiàn)方法
要添加這種自定義按鈕,需要在 Windows 注冊表的HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions 子鍵下建立一個(gè) GUID 項(xiàng),然后在注冊表的右欄建立相應(yīng)的參數(shù)并賦值。這些參數(shù)及其含義如下:
ButtonText:自定義按鈕上顯示的文本字符串;
Clsid:IE 工具條的類標(biāo)識(shí)碼,為“{1FBA04EE-3024-11D2-8F1F0000F87ABD16}”;
Default Visible:自定義按鈕是否可見,一般為 “Yes";
Exec:自定義按鈕執(zhí)行的目標(biāo),為可執(zhí)行文件或超文本鏈接等;
HotIcon:鼠標(biāo)移上按鈕時(shí)顯示的圖標(biāo),一般取自 EXE 文件或 DLL 文件;
Icon:按鈕正常顯示的圖標(biāo),一般取自 EXE 文件或 DLL 文件;
MenuText:在 IE 的“工具”菜單中顯示的菜單項(xiàng);
MenuStatusBar:IE的“工具”菜單項(xiàng)的注釋,在狀態(tài)條上顯示。
制作過程
在 VB 5.0/6.0 下建立新的“ActiveX 控件”工程。
首先,給控件 AddButton 的 Picture 屬性添加一個(gè)微型 Icon 圖片,這樣當(dāng)使用該控件時(shí),會(huì)在控件工具箱上顯示這個(gè)小圖標(biāo)。然后,再在設(shè)計(jì)窗口上放置一個(gè) image 控件,給它也設(shè)置一個(gè)小圖片,使用該控件時(shí),會(huì)在其 Form 上顯示該控件的外觀。最后,調(diào)出代碼編輯窗口,在該窗口中鍵入以下代碼,其中 API 函數(shù)調(diào)用的代碼可以直接從“API 文本瀏覽器”中獲得。
’’注意:Guid的值是特定的,才可以獲取
Option Explicit
……’’Default Property Values
……’’Property Variables
’’定義常量
Const HKEY_LOCAL_MACHINE = &H80000002
Const REG_SZ = 1
’’聲明存取注冊表的 API 函數(shù)
Private Declare Function RegCloseKey Lib “advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib “advapi32.dll" Alias “RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegDeleteValue Lib “advapi32.dll" Alias “RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Private Declare Function RegOpenKey Lib “advapi32.dll" Alias “RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib “advapi32.dll" Alias “RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String,ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
’’定義注冊表中的主鍵、子鍵
Const hKey = HKEY_LOCAL_MACHINE
Const subKey0=“Software\Microsoft\Internet Explorer\Extensions\"
’把字符串值存入注冊表
Private Sub SaveString(hKey As Long, strPath As String, strValue As String, strdata As String)
Dim keyhand As Long
Dim r As Long
r=RegCreateKey(hKey, strPath, keyhand)
r=RegSetValueEx(keyhand, strValue, 0,REG_SZ, ByVal strdata, Len(strdata))
r=RegCloseKey(keyhand)
End Sub