お世話になります。
タスクトレイに常駐するアプリをMFCで作成しております。
下記ページを参考に、見えないダイアログを作成した後、見えるダイアログを作成し、そ
の見えるダイアログに実際の処理を記述しました。
バルーン表示などの機能も動くようになったのですが、XPマシンでALT+TABキーを押す
と、実行中のアプリとして表示されてしまいます。(見えるダイアログの画面名で表示さ
れます。)
バックグラウンド・サービスなどの文言で、ネットで調べてみたのですが、ATLでしか
バックグラウンドプログラムにすることはできないのでしょうか?
MFCで作ってきたので、ここにきて作り直すのも、厳しい感じなのですが、MFCでは無理で
しょうか?
ご教授、いただけますと幸いです。
よろしく、お願いいたします。
すみません。
参考にしたページ: http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_TaskTray.html
開発環境:Visual Studio2005 C++
で開発しました。
なんだか要望が混乱している気がします。
・そもそも、そのアプリはUIを持つ必要があるのですか?
・参考ページを見ましたが、このページで解説されているのは、
UIとしてダイアログを持つにもかかわらず、タスクバーに表示されないアプリです。
その仕様は不親切ではありませんか?
・おそらく、ATL云々のサービスとは、いわゆるNTサービスのことだと思います。
MFCでもNTサービスを作れないことはないでしょうが、NTサービスがご希望通りの
ものかどうかは怪しいところです。
追記。
・今からNTサービスに変更するのは、ほぼ完全な作り直しになると思います。
シャノンさん、コメントありがとうございます。
正直、混乱してしまっているかもしれません。
イマイチ、わかってない状況で、サンプルを参考につくっていたので、このような状況に
なってしまったと思います。
・作成しようとしていたのが、Webメールのタスクトレイ常駐型新着チェッカーです。
・常駐チェッカーにログイン画面を表示させて、WebメールのID・パスワードを認証させ
ます(認証するのは、Webメール側のプログラム)。
・Webメールの新着チェックプログラムにPOSTでID・パスワードを一定間隔で投げて、
返ってきた値(新着メール数)をバルーン表示させる。
というものを作ってました。
とりあえず、希望通りの動きはできたのですが、ALT+TABで一覧の中にアイコンが出てし
まうので、この一覧に表示させないようにしたかったのです。
「一覧に表示させない」という形が、どのようなキーワードで調べれば良いのか分から
ず、とりあえずバックグラウンド・サービスなどのキーワードで調べてみたのですが、他
のキーワードで探すべきでしたでしょうか?
NTサービスでなくても良いのですが、NTサービスでないとALT+TAB一覧に表示させないも
のは作れないのでしょうか?
長文になり、申し訳ございませんが、ご助言頂きたいです。
宜しくお願いいたします。
> とりあえず、希望通りの動きはできたのですが、ALT+TABで一覧の中にアイコンが出て
し
> まうので、この一覧に表示させないようにしたかったのです。
ダイアログに WS_EX_TOOLWINDOW スタイルを付ければ出なくなるけど。
タイトルバーが細いタイプになってしまう。
参考にしている Web ページはタスクバーに最小化のアイコンを表示させない方法であっ
て
ALT+TABの一覧でアイコンを表示しない方法ではないです。
ALT+TABの一覧は普通のウインドウとプロパティのようなダイアログを表示していると思
います。
ただし WS_EX_TOOLWINDOW スタイルの付いたダイアログは表示しないようです。多分。
あと考えられるのはダイアログのオーナーウインドウを別のウインドウに所有させると
か。
でもオーナーウインドウは切り替えられたっけ?親ウインドウはできるけど…。不明。
オレンジフィッシュさん、コメントありがとうございます。
当初は、「ALT+TAB」のことなんか、全然、気にしてなかったので、
参考ページで、自分の思う通りのことができてたんです。
ある程度、完成した事に上機嫌になって、知人にみせたら
「常駐アプリやのに、“ALT+TAB”で一覧に表示されるんはオカシイ」
と、指摘を受け、「修正しよう」と思いました。
> WS_EX_TOOLWINDOW スタイルの付いたダイアログは表示しないようです。多分
見えない画面の方が、このスタイルで、確認してみたところ一覧にも出ませんでした。
この、見えない画面の方に処理を書いて直してみようと思います。
とりあえず、右クリックメニュー、別ダイアログ表示まではできたので、続きをやってみ
ます。
まだ、前途多難っぽいですが、ひとまず“解決”にしておきます。