タスクトレイからアイコンを削除したい
VB6.0にて、自作のアプリ「zisaku.exe」から、タスクトレイ常駐型の他アプリケーション「aiueo.exe」を再起動したいと考えています。
しかし、色々調べて試してみたのですが、Shell_NotifyIconに設定する設定値が分からず困っています。教えていただけないでしょうか。
(「aiueo.exe」はウィンドウを持たない)
動作フロー
(1)「aiueo.exe」のプロセスを削除する。(タスクマネージャにて確認。動作OK)
(2)「aiueo.exe」のタスクトレイアイコンを削除する。(設定値が分からない)
(3)「aiueo.exe」を起動する。(起動後は自動でタスクトレイに入る)
開発環境
WindowsXP SP2 VB6.0-SP6
コード
'タスクトレイ関連の構造体と定数
Private Type NOTIFYICONDATA
cbSize As Long
hWnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * 64
dwState As Long
dwStateMask As Long
End Type
Private Const NIF_ICON = &H2
Private Const NIF_MESSAGE = &H1
Private Const NIF_TIP = &H4
Private Const NIM_ADD = &H0
Private Const NIM_DELETE = &H2
Private Const NIM_MODIFY = &H1
Private Const WM_MOUSEMOVE = &H200
Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_RBUTTONDBLCLK = &H206
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205
Private Sub aiueoReStart()
Dim intCnt As Integer
Dim lngRet As Long
Dim strBuf As String
Dim strSql As String
Dim lobjProcess As Object
Dim lstrModule As String
Dim NID As NOTIFYICONDATA
lstrModule = "aiueo.exe"
'プロセスを削除する。
strSql = "SELECT * FROM win32_process WHERE name='" & lstrModule & "'"
For Each lobjProcess In GetObject("winmgmts:").ExecQuery(strSql)
If lstrModule = lobjProcess.Name Then
lobjProcess.Terminate
End If
Next
'Shell_NotifyIconを使ってタスクトレイより削除する。
'NIDの設定値が分からない。
'色々試して見たけど巧くいかなかった。
Shell_NotifyIcon NIM_DELETE, NID
lngRet = Shell("C:\Program Files\aiueo.exe", vbNormalNoFocus)
If lngRet = 0 Then
lngRet = MsgBox("起動失敗!", vbCritical)
End If
Exit Sub
End Sub
以上です。
どうかよろしくお願い致します。
(質問するカテゴリを間違えていたため、一時削除しました。申し訳ありません。)