TOP > カテゴリ > Visual Basic >

タスクトレイにアイコンを追加する

タスクトレイにアイコンを追加するサンプルです。

サンプルの実行画面

APIの宣言

[Shell_NotifyIcon.bas]

'------------------------------------------------------
'タスクトレイのアイコンを操作(追加、削除、変更)するAPI関数
'------------------------------------------------------
  
  '<引数>
  'dwMessage:定数(NIM_×××参照)
  'lpData: NOTIFYICONDATA構造体
  '<戻り値>
  '正常終了0以外
  
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

Public Const NIM_ADD = &H0      'アイコン追加
Public Const NIM_DELETE = &H2   'アイコン削除

Type NOTIFYICONDATA
  cbSize As Long           '構造体のサイズ
  hWnd As Long             '通知を受け取るウインドウのハンドル
  uID As Long              'ユーザー定義のID
  uFlags As Long           '定数(NIF_××参照)
  uCallbackMessage As Long '処理するメッセージ(WM_××参照)
  hIcon As Long            'アイコンのハンドル
  szTip As String * 64     'ツールチップの文字列
End Type

Public Const NIF_ICON = &H2     'アイコンを表示
Public Const NIF_MESSAGE = &H1  'メッセージを受け取る
Public Const NIF_TIP = &H4      'ツールチップを表示


Public Const WM_MOUSEMOVE = &H200       'マウスが移動した
Public Const WM_LBUTTONDOWN = &H201     'マウス左ボタンを押した
Public Const WM_LBUTTONUP = &H202       'マウス左ボタンが解放された
Public Const WM_LBUTTONDBLCLK = &H203   'マウス左ボタンがダブルクリックされた
Public Const WM_RBUTTONDOWN = &H204     'マウス右ボタンを押した
Public Const WM_RBUTTONUP = &H205       'マウス右ボタンが解放された
Public Const WM_RBUTTONDBLCLK = &H206   'マウス右ボタンがダブルクリックされた
Public Const WM_MBUTTONDOWN = &H207     'マウス中央ボタンを押した
Public Const WM_MBUTTONUP = &H208       'マウス中央ボタンが解放された
Public Const WM_MBUTTONDBLCLK = &H209   'マウス中央ボタンがダブルクリックされた

Public Const WM_KEYDOWN = &H100         'キーボードのキーが押された
Public Const WM_KEYUP = &H101           'キーボードのキーが解放された

Public Const WM_ACTIVE = &H6            'ウインドウがアクティブ、非アクティブになった



Public NID As NOTIFYICONDATA


'--------------------------------------------------------------------------------------------
'■関数名  AddIcon
'■用途    タスクトレイにアイコンを追加する
'■引数    nHwnd:ウインドウのハンドル、nIcon: アイコンのハンドル、nString: ツールチップの文字列
'--------------------------------------------------------------------------------------------
Public Function AddIcon(nHwnd As Long, nIcon As Long, nString As String)
 
  Dim Ret As Long
    
  nString = nString & Chr(0)
    
  With NID
   .cbSize = Len(NID)                 '構造体のサイズを設定
   .hIcon = nIcon                     'アイコンの設定
   .hWnd = nHwnd                      'ウインドウの設定
   .szTip = nString & Chr(0)          'ツールチップの設定
   .uCallbackMessage = WM_MOUSEMOVE   'メッセージの設定
   .uFlags = NIF_ICON Or _
             NIF_TIP Or _
             NIF_MESSAGE              'フラグの設定
   .uID = 1                           'ユーザーIDの設定
  End With


  'タスクトレイにアイコンを追加
   Ret = Shell_NotifyIcon(NIM_ADD, NID)
   
End Function

'----------------------------------------
'■関数名  DeleteIcon
'■用途    タスクトレイのアイコンを削除する
'----------------------------------------

Public Function DeleteIcon()
  
  Dim Ret As Long
   Ret = Shell_NotifyIcon(NIM_DELETE, NID)

End Function

APIの呼び出し

[Shell_NotifyIcon.frm]

Private Sub Form_Load()

 Dim Ret As Long
 Dim nString As String  'ツールチップの文字列
  
  
  nString = "MADIAのVB研究室"
    
 'タスクトレイにアイコンを追加
  Call AddIcon(hWnd, Icon, nString)

  Visible = False             'フォームを非表示
  Mnu.Visible = False         'メニューを非表示


  MsgBox "タスクトレイにアイコンを追加しました。"

End Sub


Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

      X = X \ Screen.TwipsPerPixelX

   Select Case X
       
          Case WM_LBUTTONDOWN             '左ボタンが押されたとき
                       
            Visible = True             'フォームを表示
            Mnu.Visible = False        'メニュー表示
            
          Case WM_RBUTTONDOWN             '右ボタンが押されたとき
                  
            PopupMenu Mnu            'メニューを表示
            
   End Select

End Sub

'---------------------------------------------
'メニューの「ウインドウを表示」が押された時の処理
'---------------------------------------------
Private Sub MnuWindow_Click()

  Visible = True
  Mnu.Visible = False

End Sub

'---------------------
'ここからは終了時の処理
'---------------------
Private Sub Form_Unload(Cancel As Integer)
  Call DeleteIcon
  End
End Sub

Private Sub MnuExit_Click()
 Call DeleteIcon
 End
End Sub

Private Sub Command1_Click()
  Call DeleteIcon
  End
End Sub

ソースコード一式のダウンロード

vbapi_shell_notifyicon.zip 1.61 KB (1,655 バイト)

このサンプルの動作環境について

このサンプルは 「Windows98」及び「Microsoft Visual Basic 5.0 Professional Edition」で確認しております。環境が異なる場合は正常に動作しない場合もございますのでご了承下さい。





関連記事



公開日:2015年03月04日
記事NO:00354