タスクトレイにアイコンを表示し、常駐するソフトで、
タスクバーに非表示にし、さらにソフト内から命令でフォームを元に戻したり、最小化したりしたいんですけど、
なかなか他のソフトのようにいきません。
(画面下にあとが残ったり、見た目は最小化しなかったり…)
Application.Minimizeだけでも、見た目はちゃんと最小化しますが、
タスクトレイアイコンのメニューを出したとたんに、下に跡が見えてしまいます。
メインフォームとして使うので、ツールダイアログスタイルをつけるわけにもいきません。
希望としては、WWWCやKbMediaPlayerなどのように、最小化時タスクバー非表示で、
そうでないときはタスクバーにあると、いいんですけど…。
どうすればいいでしょうか?
こういうとき、Applicationオブジェクトが邪魔になりますよね。相当苦労してもらっているんでしょうけど…。
※ 質問してしまった直後で何ですけど、8日から一週間ほど留守にしますから、
返信が遅れることがあります。
あっているかわかりませんが、
タスクトレイに入れるとき
ShowWindow(Application.Handle, SW_HIDE);
タスクトレイから出すとき
ShowWindow(Application.Handle, SW_SHOW);
で、Applicationの表示非表示を変更してもだめでしょうか。
# メニューの表示まで試していません
うーん、だめでした。
WM_SYSCOMMANDで、SC_MINIMIZEがきたときに、ShowWindow(Application.Handle, SW_HIDE); とやってみたんですけど、
タスクバーから消えないです。やり方が悪いのかもしれませんけど…。
Applicationに、WS_EX_TOOLWINDOWを追加してみると、
今度はメニューで表示するようになってしまいます。
Application.OnMinimizeで処理してもだめでしょうか。
処理的には、タスクトレイに入れたいときには、Application.Minimize;を実行します。
Minimizeが実行されると、OnMinimizeが発生するので、ここでタスクトレイに格納します。
元に戻すとき、Restoreしないと、再度Minimizeができません。
これはぐだぐだ掲示板でどうこういうよりも
Torryなり国内のdelphinあたりにそういうコンポーネントがあるので
そういうものをぺたっとはっつけるのが初心者向き
ちゃんとくみたいならソース見ればWin32APIの使い方もでていると思います。
これはもう充分に枯れたネタであり
現状わからないということは
下手に組んでもなかなか収束しないと思うので
素直に人の成果を使うのがよいと思います。
> これはぐだぐだ掲示板でどうこういうよりも
そうなると、この掲示板もあまり意味をなさなくなりますね。
ここで出てくる質問は、ほとんどが「枯れたネタ」ですから。
> 下手に組んでもなかなか収束しないと思うので
> 素直に人の成果を使うのがよいと思います。
これには賛成です。
この手が取れるなら、確かにそのほうがよいでしょう。
ごめんなさい、とっても遅れてしまいました。
> Application.OnMinimizeで処理してもだめでしょうか。
あっ。ごめんなさい、これを忘れていました。急いでいるときにプログラミングをするものじゃないですね。
無事にうまくいきました。起動直後に最小化はちょっと怪しくなってしまいましたけど、
何とかできました。
にしのさんいつもありがとうございますm(__)m
解決マークを忘れてました。
ツイート | ![]() |