Probaj sa Timer-om.
Imas Form i kad ti trebaju odredjeni pixel napravi:
Form Maximized, potom ga napravi transparentnim i odredi vrijednost
odredjenih pixela.
U modul stavi:
Code:
Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_TRANSPARENT = &H20&
Public Const SWP_FRAMECHANGED = &H20
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = &H1
Public Const SWP_SHOWME = SWP_FRAMECHANGED Or SWP_NOMOVE Or SWP_NOSIZE
Public Const HWND_NOTOPMOST = -2
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
U Form:
Code:
Private Declare Function GetPixel Lib "gdi32.dll" (ByVal hdc As Long, ByVal nXPos As Long, ByVal nYPos As Long) As Long
Private Declare Function GetCursorPos Lib "user32.dll" (lpPoint As POINT_TYPE) As Long
Private Type POINT_TYPE
X As Long
Y As Long
End Type
Dim RGBVal As Long
Dim I As Long
Private Sub Timer1_Timer()
'Nakon sto je Form pokrio citav ekran napravi ga nevidljivim
SetWindowLong Me.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT
SetWindowPos Me.hwnd, HWND_NOTOPMOST, 0&, 0&, 0&, 0&, SWP_SHOWME
'Potom procitaj vrijednost pixela ( recimo x = 534, y = 238 )
Call CitajPixel
Timer1.Enabled = False
End Sub
Private Sub CitajPixel()
RGBVal = GetPixel(Form1.hdc, 534, 238)
'Unesi negdje vrijednost pixela ( Pixel = RGBVal )
End Sub