新聞| | PChome| 登入
2007-04-23 10:18:08 | 人氣84| 回應0 | 上一篇 | 下一篇
推薦 0 收藏 0 轉貼0 訂閱站台

如何在IE工作列加入新項目

    當安裝完一些續傳軟體或是其他外掛之後,常會發現IE工作列上多出了些按鈕,如下圖,這是安裝DAP的結果

     

    後方多了一個閃電的圖形,這是如何做出來的呢?主要是在登錄檔中登記
    HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions\ 設定完成後 只要重新啟動IE就可以產生新的按鈕了 主要有幾個步驟

    1. 產生新的GUID
    2. 用這個GUID名稱在HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions\底下建立一個新的鍵值
    3. 在所建立的鍵值下產生幾個字串值

    名稱

    意義

    ButtonText

     

    要顯示在按鈕上的文字

    CLSID

    {1FBA04EE-302 4-11D2-8F1F-00 00F87ABD16}

    這是固定值

    Default Visible

     

    Yes可見,No為不可見

    Exec

     

    所要執行的程式

    HotIcon

     

    滑鼠移到按鈕上所要顯示的圖示

    Icon

     

    內定圖示

    程式

      Option Explicit
      Private Declare Function CoCreateGuid Lib "ole32.dll" (lpGUID As Any) As Long
      Private Declare Function StringFromGUID2 Lib "ole32" (lpGUID As Any, ByVal lpStr As String, ByVal lSize 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 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
      Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
      Private Const REG_SZ = 1
      Private Const ERROR_SUCCESS = 0&
      Private Const HKEY_LOCAL_MACHINE = &H80000002
      '------------------------------------------------------------------------
      'sButtonText  :  按鈕文字
      'EXEC  :  所要執行程式的路徑
      'sHotIcon  :  滑鼠移到按鈕上所要顯示的圖示
      'sIcon  :  按鈕圖示
      '------------------------------------------------------------------------
      Public Sub ADDNewButton(sButtonText As String, EXEC As String, _
       sHotIcon As String, sIcon As String)
      Dim hKey As Long
      Dim sGUID As String, B_CLSID As String, sVisable As String
      B_CLSID = "{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}" 'CLSID
      sGUID = CreateGUID() '取得新的GUID
      sVisable = "Yes" '按鈕為Visable
      If RegCreateKey(HKEY_LOCAL_MACHINE, "Software\Microsoft\Internet Explorer\Extensions\" & sGUID, hKey) = ERROR_SUCCESS Then
          RegSetValueEx hKey, "ButtonText", 0, REG_SZ, ByVal sButtonText, LenB(StrConv(sButtonText, vbFromUnicode)) + 1
          RegSetValueEx hKey, "CLSID", 0, REG_SZ, ByVal B_CLSID, LenB(StrConv(B_CLSID, vbFromUnicode)) + 1
          RegSetValueEx hKey, "Default Visible", 0, REG_SZ, ByVal sVisable, LenB(StrConv(sVisable, vbFromUnicode)) + 1
          RegSetValueEx hKey, "Exec", 0, REG_SZ, ByVal EXEC, LenB(StrConv(EXEC, vbFromUnicode)) + 1
          RegSetValueEx hKey, "HotIcon", 0, REG_SZ, ByVal sHotIcon, LenB(StrConv(sHotIcon, vbFromUnicode)) + 1
          RegSetValueEx hKey, "Icon", 0, REG_SZ, ByVal sIcon, LenB(StrConv(sIcon, vbFromUnicode)) + 1
          RegCloseKey hKey
      End If
      End Sub

      Public Function CreateGUID() As String
      Dim pGuid(16) As Byte
      Dim s As String
      s = String(255, " ")
      CoCreateGuid pGuid(0)
      StringFromGUID2 pGuid(0), s, 255
      s = Trim(s)
      CreateGUID = StrConv(s, vbFromUnicode)
      End Function


      如果要放個記事本在上面 顯示圖示C:\i1.ico以及C:\I2.ICO只要呼叫
      ADDNewButton "記事本", "C:\windows\notedpad.exe", "C:\I1.ICO", "C:\I2.ICO"
      就行了

      執行結果

         

        閃電後面又多了條魚對吧

台長: Kenny
人氣(84) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 教育學習(進修、留學、學術研究、教育概況) | 個人分類: 程式設計 |
此分類下一篇:如何在 Windows 啟動時自動執行某一個程式
此分類上一篇:由 Register 讀出

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文