如何使用系統匣直接從 Visual Basic

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:176085
本文已封存。本文係以「現狀」提供且不會再更新。
結論
本文將示範如何充份利用 Windows 系統匣或工作列通知區域使用 Visual Basic。它將您所選擇的圖示放入時,滑鼠 rested 至其上方、 應用程式按一下時,會回復,且會顯示快顯功能表會顯示您所選擇的工具提示在工作列通知區域時用滑鼠右鍵按一下。 這是因為 Visual Basic 能夠直接處理回呼的所有可能,因此利用完整 Shell_NotifyIcon 函式,會匯出由 Shell32.dll。
其他相關資訊
下列範例可加入至有至少一個表單和標準模組任何 Visual 基本專案。

雖說是逐步範例

  1. 將下列程式碼加入至專案中的標準模組的宣告區段:
          'user defined type required by Shell_NotifyIcon API call      Public 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      'constants required by Shell_NotifyIcon API call:      Public Const NIM_ADD = &H0      Public Const NIM_MODIFY = &H1      Public Const NIM_DELETE = &H2      Public Const NIF_MESSAGE = &H1      Public Const NIF_ICON = &H2      Public Const NIF_TIP = &H4      Public Const WM_MOUSEMOVE = &H200      Public Const WM_LBUTTONDOWN = &H201     'Button down      Public Const WM_LBUTTONUP = &H202       'Button up      Public Const WM_LBUTTONDBLCLK = &H203   'Double-click      Public Const WM_RBUTTONDOWN = &H204     'Button down      Public Const WM_RBUTTONUP = &H205       'Button up      Public Const WM_RBUTTONDBLCLK = &H206   'Double-click      Public Declare Function SetForegroundWindow Lib "user32" _      (ByVal hwnd As Long) As Long      Public Declare Function Shell_NotifyIcon Lib "shell32" _      Alias "Shell_NotifyIconA" _      (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean      Public nid As NOTIFYICONDATA					
  2. 將下列程式碼加入至您想要為您的應用程式回應系統匣圖示或通知圖示的專案中的任何表單:
          Private Sub Form_Load()       'the form must be fully visible before calling Shell_NotifyIcon       Me.Show       Me.Refresh       With nid        .cbSize = Len(nid)        .hwnd = Me.hwnd        .uId = vbNull        .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE        .uCallBackMessage = WM_MOUSEMOVE        .hIcon = Me.Icon        .szTip = "Your ToolTip" & vbNullChar       End With       Shell_NotifyIcon NIM_ADD, nid      End Sub      Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)      'this procedure receives the callbacks from the System Tray icon.      Dim Result As Long      Dim msg As Long       'the value of X will vary depending upon the scalemode setting       If Me.ScaleMode = vbPixels Then        msg = X       Else        msg = X / Screen.TwipsPerPixelX       End If       Select Case msg        Case WM_LBUTTONUP        '514 restore form window         Me.WindowState = vbNormal         Result = SetForegroundWindow(Me.hwnd)         Me.Show        Case WM_LBUTTONDBLCLK    '515 restore form window         Me.WindowState = vbNormal         Result = SetForegroundWindow(Me.hwnd)         Me.Show        Case WM_RBUTTONUP        '517 display popup menu         Result = SetForegroundWindow(Me.hwnd)         Me.PopupMenu Me.mPopupSys       End Select      End Sub      Private Sub Form_Resize()       'this is necessary to assure that the minimized window is hidden       If Me.WindowState = vbMinimized Then Me.Hide      End Sub      Private Sub Form_Unload(Cancel As Integer)       'this removes the icon from the system tray       Shell_NotifyIcon NIM_DELETE, nid      End Sub      Private Sub mPopExit_Click()       'called when user clicks the popup menu Exit command       Unload Me      End Sub      Private Sub mPopRestore_Click()       'called when the user clicks the popup menu Restore command       Dim Result As Long       Me.WindowState = vbNormal       Result = SetForegroundWindow(Me.hwnd)       Me.Show      End Sub					
  3. 在您加入上述程式碼的同一個表單上進行下列的屬性設定:
       Property         Required Setting for Taskbar Notification Area example   -----------------------------------------------------------------------   Icon           = The icon you want to appear in the system tray.   Minbutton      = True   ShownInTaskbar = False					
  4. 使用功能表編輯器在同一個表單中加入下列功能表項目:
       Caption      Name          Enabled   Visible   Position   ---------------------------------------------------------   &SysTray     mPopupSys      True      False    Main Level   &Restore     mPopRestore    True      True     Inset one   &Exit        mPopExit       True      True     Inset one					
視需要,您可以新增其他功能表項目。

工作列通知區域大的彈性

您可以修改出現在 [通知上面 「 工具提示藉由變更下列這一行 Form_Load 程序中的圖示:
   .szTip = "Your ToolTip" & vbNullChar				
以您想要顯示的文字取代"您工具提示 」。

您可以修改藉由變更 Form_Load 程序中的這行程出現在工作列通知區域中的圖示:
   .hIcon = Me.Icon				
取代 Me.Icon 與您的專案中任何圖示。

您可以變更任何工作列通知區域設定在 NIM_ADD 常數使用後任何時候重新指派中 nid 變數的值,然後使用下列變化 Shell_NotifyIcon API 呼叫的:
   Shell_NotifyIcon NIM_MODIFY, nid.				
但是,如果您想不同的表單,以接收在回呼,然後將需要先刪除目前的圖示 NIM_Modify 函式不會接受新 Hwnd,或您的方式,使用"Shell_NotifyIcon NIM_Delete,nid 」 將需要將另一個圖示新增至新的表單使用 systray"Shell_NotifyIcon NIM_ADD nid"之後所以再加入 nid 型別與新形成 Hwnd。針對您要在 Windows 系統匣中顯示的圖示以及在每個表單中加以變更的每個表單的啟動使用 NIM_DELETE 和 NIM_ADD 序列的事件,您也可以宣告份 nid 型別。
参考
如需有關使用系統匣或從 Visual Basic 4.0 或更早的版本時,工作列通知區域按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
149276如何使用 Windows 95/98/Me 工作列通知區域圖示
工作列

警告:本文為自動翻譯

內容

文章識別碼:176085 - 最後檢閱時間:12/05/2015 08:09:14 - 修訂: 2.5

Microsoft Visual Basic 6.0 Learning Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic Enterprise Edition for Windows 6.0, Microsoft Visual Basic Control Creation Edition, Microsoft Visual Basic 5.0 Learning Edition, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition

  • kbnosurvey kbarchive kbmt kbbug kbhowto KB176085 KbMtzh
意見反應