画面の5箇所で色の変化をチェックするタイマーがあります。私のプログラムは電話システムアプリを監視し、5つのボタンのいずれかから新しい着信があるかどうかを確認します。私が投稿した別の質問に基づいて、次のコードを使用しています。 VisualBasicで特定の色の画面領域を監視する
Private Function CheckforCall()
Try
Dim queue1 As Integer = GetPixel(GetDC(0), 40, 573)
Dim queue2 As Integer = GetPixel(GetDC(0), 140, 573)
Dim queue3 As Integer = GetPixel(GetDC(0), 240, 573)
Dim queue4 As Integer = GetPixel(GetDC(0), 340, 573)
Dim queue5 As Integer = GetPixel(GetDC(0), 440, 573)
ReleaseDC(0)
<code snipped - Checks to see if the pixel color matches and
returns true or false>
Catch ex As Exception
Return False
End Try
End Function
このコードを使用すると、GDIオブジェクトは非常に迅速かつ短い順序で急上昇し、OutOfMemory例外をスローします。DCを適切にリリースしていないと思いますが、他の方法を見つけることができないようです。