很久沒碰系統匣圖示的程式碼了
以前好像是使用微軟提供的元件來顯示系統匣圖示
我推測要這樣改,但不確定是否可行,自己試試看
我不清楚你的程式架構是怎樣
但系統匣圖示也是要提供一個視窗
以視窗的Handle(Me.hWnd)呼叫Windows API,以產生系統匣圖示
這樣額外產生的東西不歸VB管理,結束程式前需要將其釋放
另外,結束程式建議不要直接End,End是無條件直接終止程式
不會執行各表單的Unload事件,就像是工作管理員中按下結束一樣
我當做你的專案是單一表單
或者是這個表單按下結束就直接結束,無需考慮其他表單是否還在執行
如果要考慮其他表單是否還在執行,就要跑迴圈列舉Forms,Unload每個執行中的表單
以下亮綠色的是說明,另外標顏色的是需修改的程式
Private Sub Form_Load()
'If App.PrevInstance Then Unload Me
'與問題無關,但建議改成這樣
If App.PrevInstance Then
Unload Me
Exit Sub
End If
App.TaskVisible = False
InitSystemIcon Me.hWnd, Me.icon
End Sub
Private Sub Form_Unload()
'問題2 →
'終止系統匣圖示
RemoveSystemIcon Me.hWnd
'結束整個處理程序
End
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y
As Single)
Dim msg As Long
msg = X / Screen.TwipsPerPixelX
If msg = WM_LBUTTONUP Then PopupMenu myMenu, 0
'問題1 → LBUTTON 滑鼠左鍵,RBUTTON 滑鼠右鍵
'所以請把 WM_LBUTTONUP 改成 WM_RBUTTONUP
End Sub
Private Sub f_exit_Click()
'問題2 → 請把 End 換成載出表單
Unload Me
End Sub
'下面的code是放在模組
'更新 SystemICON 處理
Sub UpdateSystemIcon(hWnd As Long, icon As Object)
SystemIcon.szTip = _
SystemIcon.hIcon = icon
Shell_NotifyIcon NIM_MODIFY, SystemIcon
End Sub
'移除 SystemICON 處理
Sub RemoveSystemIcon(hWnd As Long)
Shell_NotifyIcon NIM_DELETE, SystemIcon
End Sub