自分自身ではなく他のアプリケーションのタスクトレイアイコンを
非表示にしたいのですが、Shell_NotifyIcon()で実現可能でしょうか?
もし可能であるのなら引数の NOTIFYICONDATA構造体 はどのように
設定すればよいのでしょうか?ご教授お願いいたします。
環境:WindowXP / VC++6.0 / SDK
> Shell_NotifyIcon()で実現可能でしょうか?
無理。
回答ありがとうございます、シャノンさん。
Shell_NotifyIcon()では無理との事ですが、
他に何か良い方法は御座いませんでしょうか?
是非お教え願います。
他プロセスにコードインジェクションして弄るとか。
TrayExpandってソフトが有るんだが、その関連辿ってくと、そういうことをするため
のサンプルソースが転がってた筈。
http://www.vector.co.jp/soft/cmt/winnt/util/se278547.html
今も有るかは知らないけど。
回答ありがとうございます、ぬふやさん。
上記リンク生きてました。^^;
早速、これを糸口にいろいろ探ってみたいと思います。
本当にありがとうございました。
> 他プロセスにコードインジェクションして弄るとか。
そういう方法はあると知っていて、敢えて「無理」と言ってみた。
こういう問題は、そもそも、
・どうしてそういうことをしたいのか?
・そういうことをしていいのか?
・他の方法で代替できないか?
・労力に見合う成果があるか?
あたりを検討してみると、「やらない方がいい」に落ち着く場合が少なくないと思う。
スパイウェアが動作しているのを隠すためとか、そーいう話だったりするかも。
本人にその意図が無くても、容易に悪用目的に転換できたりするわけで
rootkit 扱いされたりとか。
>「やらない方がいい」に落ち着く場合が少なくないと思う。
全く持ってその通りで返す言葉も無い。
>rootkit 扱い
他アプリのトレイアイコンを隠すという目的からして既にそれは覚悟するべきだと思
います。
そもスパイウェアならタスクトレイにアイコン出すような中途半端なものをわざわざそ
こまでして使う意味が無いような気もします…
みなさんご意見ありがとうございます。
今回このようなプログラムを実現するに至った
経緯ですが、PCアドミニストレータからPC管理ソ
フトを強制的にインストールされ、そのソフトが
常駐である為、タスクトレイに常に表示されてい
るのが目に付き、せめて非表示にしたかったとい
った所です。
あと、他にもセキュリティソフトなどのアイコ
ン等、非表示にしていても問題のない物について
は非表示にする事によってタスクバーをすっきり
させたかったのです。
決して悪用目的ではありませんのでご安心を。
現在、ぬふやさんから教えて頂いたWebサイトから
サンプルソースをダウンロードし、解析を進めてい
まが未だ本件は解決には至っていません。今後、疑
問点が出てきた折には皆さん宜しくお願いします。
> 本人にその意図が無くても、容易に悪用目的に転換できたりするわけで
流出すると rootkit 扱いになるでしょうな。少なくとも俺は rootkit 扱いする。
XP なら「通知領域のカスタマイズ」で「常に非表示」とか選べたりします。
プログラミングなど1行も不要だったりするわけですけど。
ご意見ありがとうございます、tetrapodさん。
早速プロパティでカスタマイズしてみたのですが、
できますね。個別にアイコンの表示、非表示を設定
できるとは知りませんでした。
しかし、乗り掛かった船?ですので勉強も兼ねて
もう少し調べてみようと思います。
また、話はそれますがコードインジェクションな
んてこの掲示板で初めて目にしましたが、どんなも
のなのか興味もありますし、こちらも調べてみよう
と思います。
ぬふやさんから教えて頂きました上記リンクを頼りに
何とか「アイコンを非表示にするだけ」ならできました。
ですが、非表示にしたアイコンを再度表示しようとし
たらタスクトレイにアイコン一つ分のスペースが確保さ
れるのですが何も表示されないという現象が起こってい
ます。今度はこのテーマと格闘をしたいと思います。
とりあえず、本件に関しては実現できましたのでこれ
で解決とさせていただきます。
みなさん、たくさんの助言本当にありがとうございました。
>XP なら「通知領域のカスタマイズ」で「常に非表示」とか選べたりします。
今回の場合ならそれもいいんでしょうね。
ですがこの機能は対象のタイトルが変わると別のエントリ扱いされて、一つのプロ
グラムが重複して登録される上に設定がリセットされその上過去の項目が増えて
いくというとても嫌な仕様をしているようですのでそういうソフトは便利だと思いま
す。