タスクトレイにアイコンを追加する
タスクトレイにアイコンを追加するサンプルです。
サンプルの実行画面
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
プチモンテ ※この記事を書いた人
![]() | |
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
| 🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は抒情詩、抒情的な楽曲が多い。楽曲制作は🔰2023年12月中旬 ~ | |









