程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 用VB制作IE工具條自定義按鈕

用VB制作IE工具條自定義按鈕

編輯:VB綜合教程
現在,有許多軟件安裝後會在IE浏覽器的工具條上添加一個自定義按鈕,為用戶運行程序提供了方便,如“網絡螞蟻”、“金山詞霸2000”等等。實際上添加這個自定義按鈕並不難,只要找到了它在注冊表中的位置和有關參數,通過手工或程序都可以輕易完成。而最方便的辦法就是調用現成的ActiveX控件來完成這個功能,但Windows似乎沒有提供這種控件。下面介紹如何開發和使用這種自定義控件。
  實現方法
  要添加這種自定義按鈕,需要在Windows注冊表的HKEY_LOCAL_MACHINESoftwareMicrosoftInternetExplorerExtensions子鍵下建立一個GUID項,然後在注冊表的右欄建立相應的參數並賦值。這些參數及其含義如下:
  ●ButtonText:自定義按鈕上顯示的文本字符串;
  ●Clsid:IE工具條的類標識碼,為“{1FBA04EE-3024-11D2-8F1F0000F87ABD16}”;
  ●DefaultVisible:自定義按鈕是否可見,一般為“Yes";
  ●Exec:自定義按鈕執行的目標,為可執行文件或超文本鏈接等;
  ●HotIcon:鼠標移上按鈕時顯示的圖標,一般取自EXE文件或DLL文件;
  ●Icon:按鈕正常顯示的圖標,一般取自EXE文件或DLL文件;
  ●MenuText:在IE的“工具”菜單中顯示的菜單項;
  ●MenuStatusBar:IE的“工具”菜單項的注釋,在狀態條上顯示。
  制作過程
  在VB5.0/6.0下建立新的“ActiveX控件”工程。
  首先,給控件AddButton的Picture屬性添加一個微型Icon圖片,這樣當使用該控件時,會在控件工具箱上顯示這個小圖標。然後,再在設計窗口上放置一個image控件,給它也設置一個小圖片,使用該控件時,會在其Form上顯示該控件的外觀。最後,調出代碼編輯窗口,在該窗口中鍵入以下代碼,其中API函數調用的代碼可以直接從“API文本浏覽器”中獲得。
  OptionExplicit
  ……'DefaultPropertyValues
  ……'PropertyVariables
  '定義常量
  ConstHKEY_LOCAL_MACHINE=&H80000002
  ConstREG_SZ=1
  '聲明存取注冊表的API函數
  PrivateDeclareFunctionRegCloseKeyLib“advapi32.dll"(ByValhKeyAsLong)AsLong
  PrivateDeclareFunctionRegCreateKeyLib“advapi32.dll"Alias“RegCreateKeyA"(ByValhKeyAsLong,ByVallpSubKeyAsString,phkResultAsLong)AsLong
  PrivateDeclareFunctionRegDeleteValueLib“advapi32.dll"Alias“RegDeleteValueA"(ByValhKeyAsLong,ByVallpValueNameAsString)AsLong
  PrivateDeclareFunctionRegOpenKeyLib“advapi32.dll"Alias“RegOpenKeyA"(ByValhKeyAsLong,ByVallpSubKeyAsString,phkResultAsLong)AsLong
  PrivateDeclareFunctionRegSetValueExLib“advapi32.dll"Alias“RegSetValueExA"(ByValhKeyAsLong,ByVallpValueNameAsString,ByValReservedAsLong,ByValdwTypeAsLong,lpDataAsAny,ByValcbDataAsLong)AsLong
  '定義注冊表中的主鍵、子鍵
  ConsthKey=HKEY_LOCAL_MACHINE
  ConstsubKey0=“SoftwareMicrosoftInternetExplorerExtensions"
  '把字符串值存入注冊表
  PrivateSubSaveString(hKeyAsLong,strPathAsString,strValueAsString,strdataAsString)
  DimkeyhandAsLong
  DimrAsLong
  r=RegCreateKey(hKey,strPath,keyhand)
  r=RegSetValueEx(keyhand,strValue,0,REG_SZ,ByValstrdata,Len(strdata))
  r=RegCloseKey(keyhand)
  EndSub
  '從注冊表中刪除字符串值
  PrivateFunctionDeleteValue(ByValhKeyAsLong,ByValstrPathAsString,ByValstrValueAsString)
  Dimr,keyhandAsLong
  r=RegOpenKey(hKey,strPath,keyhand)
  r=RegDeleteValue(keyhand,strValue)
  r=RegCloseKey(keyhand)
  EndFunction
  '把設置寫入注冊表,定義按鈕
  PublicSubAddBtn2IEtoolbar()
  DimsubKeyAsString
  subKey=subKey0&Trim(GUID)&“"
  CallSaveString(hKey,subKey,“ButtonText",ButtonText)
  CallSaveString(hKey,subKey,“Clsid",
  “{1FBA04EE-3024-11D2-8F1F0000F87ABD16}")
  CallSaveString(hKey,subKey,“DefaultVisible",“Yes")
  CallSaveString(hKey,subKey,“Exec",Exec)
  CallSaveString(hKey,subKey,“HotIcon",HotIcon)
  CallSaveString(hKey,subKey,“Icon",Icon)
  CallSaveString(hKey,subKey,“MenuStatusBar",
  MenuStatusBar)
  CallSaveString(hKey,subKey,“MenuText",MenuText)EndSub
  '從注冊表中刪除自定義按鈕
  PublicSubDelBtnFromIEtoolbar()
  DimsubKeyAsString
  subKey=subKey0&Trim(GUID)&“"
  CallDeleteValue(hKey,subKey,“ButtonText")
  CallDeleteValue(hKey,subKey,“Clsid")
  CallDeleteValue(hKey,subKey,“DefaultVisible")
  CallDeleteValue(hKey,subKey,“Exec")
  CallDeleteValue(hKey,subKey,“HotIcon")
  CallDeleteValue(hKey,subKey,“Icon")
  CallDeleteValue(hKey,subKey,“MenuStatusBar")
  CallDeleteValue(hKey,subKey,“MenuText")
  EndSub
  '初始化控件屬性
  PrivateSubUserControl_InitProperties()
  m_ButtonText=m_def_ButtonText
  m_Exec=m_def_Exec
  m_HotIcon=m_def_HotIcon
  m_Icon=m_def_Icon
  m_MenuText=m_def_MenuText
  m_MenuStatusBar=m_def_MenuStatusBar
  m_GUID=m_def_GUID
  EndSub
  '從存儲器中加載屬性值
  PrivateSubUserControl_ReadProperties(PropBagAsPropertyBag)
  m_ButtonText=PropBag.ReadProperty
  (“ButtonText",m_def_ButtonText)
  m_Exec=PropBag.ReadProperty(“Exec",
  m_def_Exec)
  m_HotIcon=PropBag.ReadProperty(“HotIcon",
  m_def_HotIcon)
  m_Icon=PropBag.ReadProperty(“Icon",
  m_def_Icon)
  m_MenuText=PropBag.ReadProperty
  (“MenuText",m_def_MenuText)
  m_MenuStatusBar=PropBag.ReadProperty
  (“MenuStatusBar",m_def_MenuStatusBar)
  m_GUID=PropBag.ReadProperty(“GUID",
  m_def_GUID)
  EndSub->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved