タスクトレイにアイコンを追加する
タスクトレイにアイコンを追加するサンプルです。
サンプルの実行画面
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