いつもお世話になっております。
クリップボードを一定間隔で監視し、前に取得したものと
同一かどうか比較するような機能を作ろうと考えているのですが、
どうやら Clipboard.GetText も、LoadPicture も,
画像のポインタを返すようになっているようで、同じ画像でも
値がばらばらで、ぜんぜん使い物になりませんでした。
次に考えたのが、画像の読み込みです。
Const f1 = "c:\abc.bmp"
Const f2 = "c:\abc2.bmp"
Dim s1 As String, s2 As String
Open f1 For Binary Access Read As #1
Open f2 For Binary Access Read As #2
s1 = Space$(FileLen(f1))
s2 = Space$(FileLen(f2))
Get #1, , s1
Get #2, , s2
If InStrB(1, s1, s2, vbBinaryCompare) <> 1 Then
Debug.Print "Same"
Else
Debug.Print "Not same"
Endif
案の定、ファイルが大きくなると使い物にならないくらい遅いです。
というわけで(?)、もっと高速な方法を探しています。
ご存知の方居りましたら、ぜひご教授願います。
些細なことですが、
If InStrB(1, s1, s2, vbBinaryCompare) = 1 Then
Debug.Print "Same"
Else
Debug.Print "Not same"
Endif
でした…。
まぁ、書き込んだのがビットマップファイルならヘッダ情報だけを比較して、
それで同じならビットマップデータを比較するのがいいんだろうなぁ。
ビットマップデータの比較には…ハッシュ関数を使うといいとおもわれる。
いちゆさん、ありがとうございました。
早速挑戦してみます。