• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:タスクトレイからアイコンを削除したい)

タスクトレイからアイコンを削除したい

このQ&Aのポイント
  • VB6.0で自作のアプリからタスクトレイ常駐型の他アプリを再起動したい
  • Shell_NotifyIconの設定値が分からず困っています
  • 「aiueo.exe」のプロセスを削除し、タスクトレイアイコンを削除したい

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

タスクトレイって、実体はただのツールバーで、アイコンを登録したウィンドウにメッセージを送っているだけなので、おそらく非表示になっているだけで、aiueo.exe にはウィンドウがあると思います。 Microsoft の Spy++ がインストールされているなら、Spy++ で調べてみるとよいと思います。 Spy++ がなければ、 http://www001.upp.so-net.ne.jp/yamashita/product/debug/ww.htm なんかがよさそうです。 ウィンドウクラス名がわかれば、API の FindWindow 関数、もしくは FindWindowEx 関数を使用して、ウィンドウハンドルが取得できます。 で、取得したウィンドウハンドルに SendMessage 関数で WM_DESTROY を送ってやれば、普通のアプリケーションなら、タスクトレイからアイコンを削除して終了すると思います。 もし何か異常な状態になっていて、WM_DESTROY ではアイコンが削除されないのであれば、 Shell_NotifyIcon で削除しなければならないと思いますが、 http://msdn.microsoft.com/en-us/library/bb773352(v=vs.85).aspx に記載されているように、NOTIFYICONDATA の hWnd と uID の組み合わせ、もしくは、guidItem によって識別しています。ということで、 Dim i As Long NID.hWnd = FindWindow( "ウィンドウクラス名", "" ) For i = 0 To &HFFFFFFFF NID.uID = i If Shell_NotifyIcon( NIM_DELETE, NID ) Then Exit For End If Next のようにすればよいと思います。

akirakunnn
質問者

お礼

色々と試してるうちに遅くなりまして申し訳ありません。 おかげさまで解決する事ができました。ありがとうございます。 ほんと助かりました。

akirakunnn
質問者

補足

回答ありがとうございます。 返信が遅くなり申し訳ありません。 急遽出張することになり回答が出来ない状況でした。 了解しました。 早速試してみます。

関連するQ&A