画面の比較


Chaos  2005-04-12 14:34:23  No: 89327  IP: [192.*.*.*]

ある一定の間隔で他のプログラムのウィンドウ内が変化したかを監視したいと考えています。
(例えば、空欄だったのがメッセージが表示される)
監視間隔としては1分〜10分程度で、ウィンドウ名(タイトル)は固定で、常に表示したままの状態です。
イメージ的には、一つ前の時間のウィンドウの画面コピーを取り、比較して違っていた場合処理をするという感じです。

なにか良い方法はありませんでしょうか?
よろしくお願いします。

編集 削除
さるべーじ  2005-04-12 18:04:54  No: 89328  IP: [192.*.*.*]

とりあえず発想的にはおっけーだと思います。

で、どこでつまづいているんでしょう?

編集 削除
みい  2005-04-12 18:39:08  No: 89329  IP: [192.*.*.*]

普通に画面のハードコピーの予定かな?
それだと対象画面が最小化されてたり他の画面がかぶっていたり
に注意が必要と思います。
あとはタイトルバー部分はアクティブ、非アクティブで色が変わったり
するから比較部分からタイトルバーは外すとか。
意味取り違えてたらごめんなさい(あんまり頭が回ってない)。

編集 削除
Chaos  2005-04-13 09:32:29  No: 89330  IP: [192.*.*.*]

大事な部分を書き忘れていたみたいです。

分からない部分としては、
ビットマップの比較方法です。
単純にクリップボードにあるものを一時格納し
次に取ったクリップボードの画面とを比較すればいいのでしょうか?
それとも何かに置き換えて行わなければいけないのでしょうか?

編集 削除
medaka  2005-04-13 11:11:40  No: 89331  IP: [192.*.*.*]

クリップボードからmemorystreamに読み込んで
バイナリで比較するとか?

編集 削除
かえで  2005-04-13 13:38:36  No: 89332  IP: [192.*.*.*]

クリップボードを使用しなくても、APIのGetDibits関数でバイト配列
に画像データを取得し、前回取得したものとを比較すればいいのではないでしょうか。

編集 削除
ねろ  2005-04-13 14:11:34  No: 89333  IP: [192.*.*.*]

いちばん簡単なのは、クリップボードの内容をファイルに吐き出させ、
DosのFile Compare(fc)コマンドで比較する方法かな。
殆どコードを書く必要が無い。

編集 削除
Chaos  2005-04-14 16:50:13  No: 89334  IP: [192.*.*.*]

色々アドバイスありがとうございます。
ひとつずつやってみます。

編集 削除
ねろ  2005-04-14 17:25:20  No: 89335  IP: [192.*.*.*]

タスクトレイの中の時計を非表示にすることを忘れないで下さい。
ブロードキャストが流れているなら、ネットワーク表示も。。

編集 削除