VC6にて常駐アプリを作りたいのですが
アプリ起動時のタスクトレイにアイコン追加
アプリ終了時のタスクトレイのアイコン削除
は正常にいくのですが
アプリを強制終了(Ctrl+Alt+Delete)させると
アイコンが残ったままです。
アプリが落ちた時にタスクトレイアイコンを削除する
場合はどこに削除処理をいれるとようのでしょうか
強制終了ですから,どうしようもないです。
強制終了時に何らかのアクションがとれると,強制終了になりません。
回答ありがとうございます
>強制終了時に何らかのアクションがとれると,強制終了になりません。
これって実際どんな風にすればよいのでしょう
通常の常駐ソフト(付箋紙とか)を強制終了させると
トレイアイコンも消えてくれます。
そんな感じにしたいのですが?
→その開発者に聞けばって感じですかねえ
>>強制終了時に何らかのアクションがとれると,強制終了になりません。
>これって実際どんな風にすればよいのでしょう
すいません。
なんか、勘違いしていました。
たしかにそうですね。
もうひとつ監視用のアプリケーションを常駐させて、そのソフトが終了したら、アイコンを削除して、自分自身も終了するというのはだめですか?
(MFCだからあまり使えないかも...)
DotLさん回答ありがとうございます。
>もうひとつ監視用のアプリケーションを常駐させて、そのソフトが終了したら、>アイコンを削除して、自分自身も終了するというのはだめですか?
この場合、監視アプリが終了させられたら駄目だし、
アイコン削除用だけのアプリを起動させて、リソースの無駄の
ような気がするのですが
通常の常駐ソフトとかではうまくいっているので
手はあるとおもうんですけど、
Ctrl+Alt+Deleteでの強制終了って最初にWM_CLOSEが来て
それでも終了しなければ強制的に殺しに来る
という動作だったような気がします。
nrさん 回答ありがとうございます
>Ctrl+Alt+Deleteでの強制終了って最初にWM_CLOSEが来て
>それでも終了しなければ強制的に殺しに来る
>という動作だったような気がします。
あ、消えました。ありがとうございます。
と、思ったら今度、追加処理を消しても消えるようになった???
(WM_CLOSEがきたらShell_NotifyIcon(NIM_DELETE, &m_stN)を発行)
→「CDialog::OnClose()」の中で自動的に消してんのかなあ
と思ってそれも消してみたんだけど、やっぱりアイコン消える
追加したとこ消しても、やっぱりアイコン消える
当初の目的(トレイアイコンを消す)は達成したのですが、
どうして消えるようになったのか良くわかりません
なんでですかねえ
追加動作
1.メッセージハンドラの追加→WM_CLOSE(OnClose())
2.その中にShell_NotifyIcon(NIM_DELETE, &m_stN)を追加
3.「WindowProc」にも「WM_CLOSE」がきたら削除処理を追加
関係ないかもしれませんが、
NT系ではWM_CLOSEは来ないと思います。
NT系で、どうやらプロセス強制終了されるとメッセージは一切ないようです。(当たり前ですが...)
編集 削除DotLさん 回答ありがとうございます
>NT系ではWM_CLOSEは来ないと思います。
開発環境はWin98なのですが
本ツールを使用する環境がWinNTとかWin2Kとかなんで
どうしましょ
他の人ってどうやってるのかなあ?
NT系でプロセスを強制終了しようとしているならば,
#タスクマネージャのプロセスタブから終了させた場合
諸々の不具合が出ることはシステムからメッセージが出ているので知っているものと考えています。
つまり,私が作った場合は強制終了に対する処理は一切していません。
ちなみに,NT系のタスクマネージャでアプリケーションタブから終了させる場合は,まずWM_CLOSEがきます。
一応以下で解決にしようと思います
WM_CLOSEがきたときアイコン削除処理をする
但し、それでも駄目なときはあきらめる(再起動かアイコンをそのまま)
→基本的に強制終了とかプログラムが落ちるとかを意識しない
(もちろん最低限の終了処理は行うが)
なお、回答をくださった皆様にはお礼を申し上げます。