在 IE 浏览器的工具条上添加一个自定义按钮
  ' 现在,有许多软件安装后会在 IE 浏览器的
  '工具条上添加一个自定义按钮,为用户运行程序提供了方便,如"网络蚂蚁"、
  '"金山词霸"等等。实际上添加这个自定义按钮并不难,只要找到了它在
  '注册表中的位置和有关参数,通过手工或程序都可以轻易完成。
  '而最方便的办法就是调用现成的 ActiveX 控件来完成这个功能,
  '但 Windows 似乎没有提供这种控件。下面介绍如何开发和使用这种自定义控件。'实现方法
  ' 要添加这种自定义按钮,需要在 Windows 注册表的HKEY_LOCAL_MACHINE\
  'Software\Microsoft\Internet Explorer\Extensions 子键下建立一个 GUID 项,
'然后在注册表的右栏建立相应的参数并赋值?这些参数及其含义如下:
  ' ButtonText:自定义按钮上显示的文本字符串;
  ' Clsid:IE 工具条的类标识码,为"{1FBA04EE-3024-11D2-8F1F0000F87ABD16}";
  ' Default Visible:自定义按钮是否可见,一般为 "Yes";
  ' Exec:自定义按钮执行的目标,为可执行文件或超文本链接等;
  ' HotIcon:鼠标移上按钮时显示的图标,一般取自 EXE 文件或 DLL 文件;
  ' Icon:按钮正常显示的图标,一般取自 EXE 文件或 DLL 文件;
  ' MenuText:在 IE 的"工具"菜单中显示的菜单项;
  ' MenuStatusBar:IE的"工具"菜单项的注释,在状态条上显示。'制作过程
  ' 在 VB 5.0/6.0 下建立新的"ActiveX 控件"工程。
  ' 首先,给控件 AddButton 的 Picture 属性添加一个微型 Icon 图片,这样当使用该控件时,
  '会在控件工具箱上显示这个小图标。然后,再在设计窗口上放置一个 image 控件,
  '给它也设置一个小图片,使用该控件时,会在其 Form 上显示该控件的外观。
  '最后,调出代码编辑窗口,在该窗口中键入以下代码,
 ' 其中 API 函数调用的代码可以直接从"API 文本浏览器"中获得。'注意:Guid的值是特定的,才可以获取
Option Explicit
'…… 'Default Property Values
'…… 'Property Variables
'定义常量
Const HKEY_LOCAL_MACHINE = &H80000002
Const REG_SZ = 1
Const m_def_ButtonText = "lyc"
Const m_def_Exec = "pubs"
Const m_def_HotIcon = "ghjghj"
Const m_def_Icon = "hjkhjk"
Const m_def_GUID = "hgjghj"
'以上是自加的  06.06.06'声明存取注册表的 API 函数
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As LongPrivate Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As LongPrivate Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As LongPrivate Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As LongPrivate 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

解决方案 »

  1.   

    接上:'定义注册表中的主键、子键
    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'从注册表中删除字符串值
    Private Function DeleteValue(ByVal hKey As Long, ByVal strPath As String, ByVal strValue As String)
    Dim r, keyhand As Long
    r = RegOpenKey(hKey, strPath, keyhand)
    r = RegDeleteValue(keyhand, strValue)
    r = RegCloseKey(keyhand)
    End Function'把设置写入注册表,定义按钮
    Public Sub AddBtn2IEtoolbar()
    Dim subKey As String
    subKey = subKey0 & Trim(GUID) & "\"
    Call SaveString(hKey, subKey, "ButtonText", ButtonText)
    Call SaveString(hKey, subKey, "Clsid", "{1FBA04EE-3024-11D2-8F1F0000F87ABD16}")
    Call SaveString(hKey, subKey, "Default Visible", "Yes")
    Call SaveString(hKey, subKey, "Exec", Exec)
    Call SaveString(hKey, subKey, "HotIcon", HotIcon)
    Call SaveString(hKey, subKey, "Icon", Icon)
    Call SaveString(hKey, subKey, "MenuStatusBar", MenuStatusBar)
    Call SaveString(hKey, subKey, "MenuText", MenuText)
    End Sub'从注册表中删除自定义按钮
    Public Sub DelBtnFromIEtoolbar()
    Dim subKey As String
    subKey = subKey0 & Trim(GUID) & "\"
    Call DeleteValue(hKey, subKey, "ButtonText")
    Call DeleteValue(hKey, subKey, "Clsid")
    Call DeleteValue(hKey, subKey, "Default Visible")
    Call DeleteValue(hKey, subKey, "Exec")
    Call DeleteValue(hKey, subKey, "HotIcon")
    Call DeleteValue(hKey, subKey, "Icon")
    Call DeleteValue(hKey, subKey, "MenuStatusBar")
    Call DeleteValue(hKey, subKey, "MenuText")
    End Sub'初始化控件属性
    Private Sub UserControl_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
    End Sub'从存储器中加载属性值
    Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
    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)
    End SubPrivate Sub UserControl_Resize()
    UserControl.Width = 540
    UserControl.Height = 540
    Image1.Move 0, 0, ScaleWidth, ScaleHeight
    End Sub'将属性值写到存储器
    Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
    Call PropBag.WriteProperty("ButtonText", m_ButtonText, m_def_ButtonText)
    Call PropBag.WriteProperty("Exec", m_Exec, m_def_Exec)
    Call PropBag.WriteProperty("HotIcon", m_HotIcon, m_def_HotIcon)
    Call PropBag.WriteProperty("Icon", m_Icon, m_def_Icon)
    Call PropBag.WriteProperty("MenuText", m_MenuText, m_def_MenuText)
    Call PropBag.WriteProperty("MenuStatusBar", m_MenuStatusBar, m_def_MenuStatusBar)
    Call PropBag.WriteProperty("GUID", m_GUID, m_def_GUID)
    End Sub'获取按钮文本
    Public Property Get ButtonText() As String
    ButtonText = m_ButtonText
    End Property'设置按钮文本
    Public Property Let ButtonText(ByVal New_ButtonText As String)
    m_ButtonText = New_ButtonText
    PropertyChanged "ButtonText"
    End Property'获取当前按钮执行目标
    Public Property Get Exec() As String
    Exec = m_Exec
    End Property'设置当前按钮执行目标
    Public Property Let Exec(ByVal New_Exec As String)
    m_Exec = New_Exec
    PropertyChanged "Exec"
    End Property
    '获取鼠标移上按钮时显示的图标
    Public Property Get HotIcon() As String
    HotIcon = m_HotIcon
    End Property'设置鼠标移上按钮时显示的图标
    Public Property Let HotIcon(ByVal New_HotIcon As String)
    m_HotIcon = New_HotIcon
    PropertyChanged "HotIcon"
    End Property'获取按钮正常显示的图标
    Public Property Get Icon() As String
    Icon = m_Icon
    End Property'设置按钮正常显示的图标
    Public Property Let Icon(ByVal New_Icon As String)
    m_Icon = New_Icon
    PropertyChanged "Icon"
    End Property'获取菜单项显示文本
    Public Property Get MenuText() As String
    MenuText = m_MenuText
    End Property'设置菜单项显示文本
    Public Property Let MenuText(ByVal New_MenuText As String)
    m_MenuText = New_MenuText
    PropertyChanged "MenuText"
    End Property'获取菜单项注释文本
    Public Property Get MenuStatusBar() As String
    MenuStatusBar = m_MenuStatusBar
    End Property'设置菜单项注释文本
    Public Property Let MenuStatusBar(ByValNew_MenuStatusBar As String)
    m_MenuStatusBar = New_MenuStatusBar
    PropertyChanged "MenuStatusBar"
    End PropertyPublic Property Get GUID() As String
    GUID = m_GUID
    End PropertyPublic Property Let GUID(ByVal New_GUID As String)
    m_GUID = New_GUID
    PropertyChanged "GUID"
    End Property'显示"关于"对话框
    Public Sub ShowAboutBox()
    frmAbout.Show vbModal
    Unload frmAbout
    Set frmAbout = Nothing
    End Sub
    '该控件提供了 7 个属性和2 个方法。
    '控件的属性:
    '  GUID:一个在注册表唯一标识应用软件的数字序列,共36位;
    '  ButtonText:按钮上显示的文本;
    '  Exec:按钮执行的目标,为可执行文件或超文本链接等;
    '  HotIcon:鼠标移上按钮时显示的图标,取自 EXE 文件或 DLL 文件;
    '  Icon:按钮正常显示的图标,取自 EXE 文件或 DLL 文件;
    '  MenuText:在 IE "工具"菜单中显示的菜单项;
    '  MenuStatusBar:IE"工具"菜单项的解释,显示在底部的状态条上。
    '控件的方法:
    '  AddBtn2IEtoolbar:添加自定义按钮;
    'DelBtnFromIEtoolbar:     删除自定义按钮?
    以上代码是网上的,我运行后出现“变量为定义”并指向下面
    '初始化控件属性
    Private Sub UserControl_InitProperties()
    m_ButtonText = m_def_ButtonText
    请各位高手帮看看!!!
      

  2.   

    '注意:Guid的值是特定的,才可以获取
    Option Explicit
    ......
    Private m_ButtonText As String  <-----添加这行
    '定义常量
    ......
      

  3.   

    UserControl_InitProperties这个只能用在测试时,生成后是没用的
      

  4.   

    m_def_ButtonText As String
     m_Exec As String
     m_def_Exec As String
     m_HotIcon As String
     m_def_HotIcon As String
     m_def_Icon As String
     m_Icon As String
     m_MenuText As String
     m_def_MenuText As String m_def_MenuStatusBar As String
     m_MenuStatusBar As String m_def_GUID As String
     m_GUID As String
     New_MenuStatusBar As String都要定义为常量么??
      

  5.   

    hrtc() 说的"UserControl_InitProperties这个只能用在测试时,生成后是没用的"
    是何意???
      

  6.   

    在注册表中可以显示以下内容,但我的IE上不显示(Add2IEToolbar.exe是我随便用VB生成的)
    (101.102不知是何义???)
    求斑竹及高手帮忙,先谢了!!!(我的ie装了3721助手)ButtonText = “控件" 
    Exec = “http://why100000.at. china.com" 
    HotIcon = “C:\Add2IE Toolbar\Add2IEToolbar.exe,101" 
    Icon = “C:\Add2IE Toolbar\Add2IEToolbar.exe,102" 
    MenuText = “测试控件" 
    MenuStatusBar = “" 
    Default Visible=Yes
      

  7.   

    就是在vb调试环境下用的,主要让你测试控件用的,生成exe后这个方法没有用。