如何使用 Windows 95/98/Me 工作列通知區域圖示

文章翻譯 文章翻譯
文章編號: 149276 - 檢視此文章適用的產品。
本文已封存。本文係以「現狀」提供且不會再更新。
全部展開 | 全部摺疊

在此頁中

結論

Windows API 可讓您可以新增、 修改,及移除系統匣或工作列通知區域,Windows 95、 Windows 98、 Windows Me、 Windows NT 4.0 和 Windows 2000 殼層中可用的圖示。可以使用由 Shell32.dll 匯出只 Shell_NotifyIcon 函式,提供這項功能。這個 API 函式也可讓您指定當使用者使用滑鼠指標停留在圖示時,會顯示 「 工具提示的文字字串。本文逐步的範例會建立 Visual Basic 程式可示範如何使用這個 API 函式。

能夠採取一些動作,如果按一下工作列通知區域中的圖示則取決於回呼函式。因為 Visual Basic 4.0 不直接支援回呼函式,沒有要顯示表單或執行某些程式碼使用單獨 Visual Basic 4.0 方法。在 Visual Basic 5.0 (及更新版本) 中,已加入這項功能搭配 AddressOf 運算子。許多選項都可以提供回撥功能包括訊息 Blaster OCX OCX < 參考 > 一節的這份文件] 或 [回撥 OLE 伺服器,在 Bruce McKinney 書籍 死硬 Visual Basic 中詳細說明所述的 Microsoft 系統日誌發行項中所提及的 Visual Basic 4.0 開發人員可以使用。如需任何這些選項的詳細資訊,請參閱 < 參考 > 一節。因為這些產品不包含 Visual Basic,Microsoft 產品支援服務並不支援它們的使用。

其他相關資訊

下列範例會建立一個表單 Visual Basic 專案,示範如何使用 Shell_NotifyIcon API 函式。

雖說是逐步範例

  1. 啟動 Visual Basic。預設會建立 Form1。
  2. 將表單的圖示屬性變更為應該會顯示在工作列通知區域的圖示。
  3. 繪製三個 CommandButtons 拖曳到表單。
  4. 從插入功能表將單一的程式碼模組加入至專案中選取 [模組]。
  5. 加入下列程式碼函式、 型別及到 Module1 的常數宣告所組成:
          Type NOTIFYICONDATA
              cbSize As Long
              hWnd As Long
              uID As Long
              uFlags As Long
              uCallbackMessage As Long
              hIcon As Long
              szTip As String * 64
          End Type
    
          Global Const NIM_ADD = 0
          Global Const NIM_MODIFY = 1
          Global Const NIM_DELETE = 2
          Global Const NIF_MESSAGE = 1
          Global Const NIF_ICON = 2
          Global Const NIF_TIP = 4
    
          Declare Function Shell_NotifyIconA Lib "SHELL32" _
          (ByVal dwMessage As Long,  lpData As NOTIFYICONDATA) As Integer
    					
  6. 下列程式碼是採用需要設定 NOTIFYICONDATA 型別參數的函式,並傳回這個型別的變數。 將加入至 Form1:
          Private Function setNOTIFYICONDATA(hWnd As Long, ID As Long, _
              Flags As Long, CallbackMessage As Long, Icon As Long, _
              Tip As String) As NOTIFYICONDATA
    
              Dim nidTemp As NOTIFYICONDATA
    
              nidTemp.cbSize = Len(nidTemp)
              nidTemp.hWnd = hWnd
              nidTemp.uID = ID
              nidTemp.uFlags = Flags
              nidTemp.uCallbackMessage = CallbackMessage
              nidTemp.hIcon = Icon
              nidTemp.szTip = Tip & Chr$(0)
    
              setNOTIFYICONDATA = nidTemp
          End Function
    					
  7. 在這個程式碼區塊中三個的程序呼叫在步驟 5 以新增、 修改,及移除工作列通知區域圖示中建立函式。也將這段程式碼加入至 Form1:
          Private Sub Command1_Click()
              'Add an icon.  This procedure uses the icon specified in
              'the Icon property of Form1. This can be modified as desired.
    
              Dim i As Integer
              Dim s As String
              Dim nid As NOTIFYICONDATA
    
              s = InputBox("Enter string:")
              nid = setNOTIFYICONDATA(hWnd:=Form1.hWnd, _
                                      ID:=vbNull, _
                                      Flags:=NIF_MESSAGE Or NIF_ICON _
                                      Or NIF_TIP, _
                                      CallbackMessage:=vbNull, _
                                      Icon:=Form1.Icon, _
                                      Tip:=s)
    
                 i = Shell_NotifyIconA(NIM_ADD, nid)
             End Sub
    
             Private Sub Command2_Click()
                 'Modify an existing icon. This procedure uses the icon
                 'specified in the Icon property of Form1. This can be modified
                 'as desired.
    
                 Dim i As Integer
                 Dim s As String
                 Dim nid As NOTIFYICONDATA
    
                 s = InputBox("Enter string:")
                 nid = setNOTIFYICONDATA(hWnd:=Form1.hWnd, _
                                         ID:=vbNull, _
                                         Flags:=NIF_MESSAGE Or NIF_ICON _
                                         Or NIF_TIP, _
                                         CallbackMessage:=vbNull, _
                                         Icon:=Form1.Icon, _
                                         Tip:=s)
    
                 i = Shell_NotifyIconA(NIM_MODIFY, nid)
             End Sub
    
             Private Sub Command3_Click()
                 'Delete an existing icon.
    
                 Dim i As Integer
                 Dim nid As NOTIFYICONDATA
    
              nid = setNOTIFYICONDATA(hWnd:=Form1.hWnd, _
                                      ID:=vbNull, _
                                      Flags:=NIF_MESSAGE Or NIF_ICON _
                                      Or NIF_TIP, _
                                      CallbackMessage:=vbNull, _
                                      Icon:=Form1.Icon, _
                                      Tip:="")
    
              i = Shell_NotifyIconA(NIM_DELETE, nid)
          End Sub
    					
  8. 按下 F5 鍵,或從執行應用程式的 [執行] 功能表中選取開始。按一下第一個按鈕,然後輸入要新增圖示的文字字串。按一下第二個按鈕,修改現有的圖示和第三個刪除圖示。

?考

死硬 Visual Basic,Bruce McKinney Microsoft 按 1995年。

Microsoft Win32 SDK、 Shell_NotifyIcon 而且 NOTIFYICONDATA。

二月 1996 [Visual 程式設計師頁面 93 Microsoft 系統日誌。

頁面 136 Visual Basic 開發者日誌三月 1996年常見問題。

如需詳細資訊按一下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
162613如何操作中與 Visual Basic 系統匣圖示

屬性

文章編號: 149276 - 上次校閱: 2014年2月22日 - 版次: 3.1
這篇文章中的資訊適用於:
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
關鍵字:?
kbnosurvey kbarchive kbmt kbapi kbhowto KB149276 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:149276
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com