- ベストアンサー
タスクバーのインジケータの状態を知るには
VB.NET+WINXPなのですが、 タスクバーに出ているインジケーターの状態を 取得したいのですが、どのような方法が 可能でしょうか? PCastTVというテレビ録画のソフトなのですが、 待機中は青で録画予約の待機中は黄色で録画中は赤なのですが、 それぞれの状態を取得したいです。 あと、変化があったらプログラムで判別してそれぞれの動作をさせたいのですが、 何秒間隔とかで確認して変化を知るという感じになるでしょうか? それとも変化したら実行させるように作る事はできるでしょうか? たいへん申し訳ございませんが、ご教示頂けたら助かります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>PCastTVというテレビ録画のソフト すいません。ソフトを持っていないのではっきり物を言えませんが。。。 まず、タスクのインジケータが、どの様に構成されているかを分析する必要があります。 Spy++ http://okweb.jp/kotaeru.php3?q=1573445 ・インジケータが、一つのウィンドウで構成されている場合 一つのウィンドウ内で、部分ペイントにより進捗を表現していると思われ、実質無理っぽいような気がします。 ・インジケータが、複数のウィンドウで構成されている場合 もしかしたら、インジケータの進捗を表すカラー部分のサイズを変更することで、進捗状態を表現しているかもしれません。また、待機中/録画中の色が変わるのであれば、その都度表示している進捗を表現するウィンドウを切り替えているかもしれません。 もし読み通りであれば、永久ループの監視をすることで実現可能ではるとは思いますが、ソフトとしてはPCへの負荷を考えると、現実的ではないように思います。 ・構成ウィンドウ状態に頼らないで、実現するためには、、、 万が一、処理が共有メモリを通じて行われているのであれば(まずありえないとは思いますが)、共有メモリを読み取る方法が考えられますが、これまた負荷を与えることになります。 PCastTVというのは、ソフトでの録画だと思うので、永久ループによる負荷を与えると、録画画質に影響することが考えられます。 それと、実現可能/不可能は置いておいてと、、、 「常に監視」の作りではなく、知りたい時に「状態の問い合わせをスポット的に行う」作りの方で進められた方が良いかもしれません。
お礼
大変参考になります。ありがとうございます。