Visual Basic Tips


タスクトレイに常駐(API)


タスクトレイ常駐アプリです。
Form1のメニューをタスクトレイアイコンで右クリックしたときのメニューに使用し、「About」をクリックするとForm2を表示します。



'/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
'/_/
'/_/ Form1
'/_/
'/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_



Private Sub Form_Load()
  Form1.Visible =
False
  Form1.menu0.Visible =
False

  udtNotifyIconData.cbSize = Len(udtNotifyIconData)
  udtNotifyIconData.hwnd = Form1.hwnd
  udtNotifyIconData.uID = 1
  udtNotifyIconData.uFlags = NIF_ICON
Or NIF_TIP Or NIF_MESSAGE
  udtNotifyIconData.uCallbackMessage = WM_MOUSEMOVE
  udtNotifyIconData.hIcon = Form1.Icon
  udtNotifyIconData.szTip = "タスクトレイのサンプル"
& vbNullChar

  
Call Shell_NotifyIcon(NIM_ADD, udtNotifyIconData)

  Form2.Label1.Caption = "タスクトレイのサンプルです"
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  
Select Case X \ Screen.TwipsPerPixelX
      
Case WM_MOUSEMOVE
      
Case WM_LBUTTONDOWN
      
Case WM_LBUTTONUP
      
Case WM_LBUTTONDBLCLK
          Form2.Show vbModal
      
Case WM_RBUTTONDOWN
          
Call SetForegroundWindow(Me.hwnd)
          DoEvents
          Me.PopupMenu menu0
      
Case WM_RBUTTONUP
      
Case WM_RBUTTONDBLCLK
  
End Select
End Sub

Private Sub Form_Unload(Cancel As Integer)
  
Call Shell_NotifyIcon(NIM_DELETE, udtNotifyIconData)
End Sub

Private Sub mnuAbout_Click()
  Form2.Show vbModal
End Sub

Private Sub mnuEnd_Click()
  
Call Form_Unload(0)
  
End
End Sub

'/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
'/_/
'/_/ Form2
'/_/
'/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_

Private Sub Command1_Click()
  Unload Me
End Sub

'-------------------------------------------------------
' Module
'-------------------------------------------------------
Public udtNotifyIconData As NOTIFYICONDATA

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

'NOTIFYICONDATAのuFlagsで使用する定数
Public Const NIF_ICON = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_TIP = &H4

'Shell_NotifyIconで使用する定数
Public Const NIM_ADD = &H0
Public Const NIM_DELETE = &H2
Public Const NIM_MODIFY = &H1

Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_RBUTTONDBLCLK = &H206
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205

Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long


DownLoad vbtips099.lzh 3KB (VB6.0)