タスクトレイを再描画するには


塩酸  2004-09-07 17:09:47  No: 85461  IP: [192.*.*.*]

VBsp6です。
タスクトレイに常駐しているプログラムを強制終了させるツールを
作成しているのですが、任意の常駐プログラム(自作ではない)の
プロセスを終了させてもそいつのアイコンがタスクトレイに
残ってしまいます。(マウスカーソルをかざすと消える。)
トレイの内容を臨機に更新するため再描画のような処置が
必要になりそうなのですがどのようにすればよいのでしょうか。
ダミーアイコンをトレイに追加&削除したりなぞしても
再描画更新されませんでした。

編集 削除
塩酸  2004-09-08 10:05:56  No: 85462  IP: [192.*.*.*]

補足です。
強制終了にはTerminateProcessを使用しています。
SendMessage-WM_CLOSE等を使うのが望ましいとは思うのですが、
WM_CLOSEでは(ウインドウが閉じるだけで)終了までしてくれない
プログラムがあるので。。

編集 削除
kara  2004-09-08 22:19:30  No: 85463  IP: [192.*.*.*]

> トレイの内容を臨機に更新するため再描画のような処置が
> 必要になりそうなのですがどのようにすればよいのでしょうか。
トレイ自体の再描画はわかりませんが
そのウインドウハンドルを取得できているならNIM_DELETEを送ってみてはいかがでしょう
それですべてがうまくいくわけではありませんが
あるていどはうまくいくと思います

> 強制終了にはTerminateProcessを使用しています。
> SendMessage-WM_CLOSE等を使うのが望ましいとは思うのですが、
> WM_CLOSEでは(ウインドウが閉じるだけで)終了までしてくれない
> プログラムがあるので。。
どうせなら
WM_CLOSE
WM_DESTROY
TerminateProcess
の順で送るようにしてはいかがでしょう
ほとんどのものはWM_CLOSE、WM_DESTROYで終了しますので

編集 削除
kara  2004-09-08 22:21:02  No: 85464  IP: [192.*.*.*]

あ〜すみません
NIM_DELETE送っても意味ないです
何をを勘違いしてるんだか

本当にごめんなさい

編集 削除