PDA

View Full Version : [VB6] RILEVARE IL COLORE DI UN PIXEL CON GETPIXEL


luxe
18-02-2008, 16:16
Salve ragazzi,
mi serve rilevare il colore di un pixel di una applicazione esterna al form, as "solitario", per poi farmi restituire il valore RGB nella casella text.text.
Faccio cosi:

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long

Private Sub Form_Load()
Dim hDC As Long
Dim rSult As Long
hDC = FindWindow("Solitario", vbNullString)
rSult = GetPixel(hDC, 549, 395)
Text1.Text = rSult
End Sub

risultato nella text1 = -1 anziche ad es. 255 255 255 :muro:

cionci
18-02-2008, 16:33
FindWindow non ti ritorna un HDC, ma un HWND.
Per ottenere un HDC devi usare getDC: http://msdn2.microsoft.com/en-us/library/ms533241.aspx

luxe
19-02-2008, 10:50
l'unica soluzione che mi viene in mente e' questa allora:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long


Private Sub Timer1_Timer()
Dim hDC As Long
Dim hwnd As Long
Dim rSult As Long
hwnd = FindWindow(vbNullString, "METIN2")
hDC = GetDC(hwnd)
rSult = GetPixel(hDC, 122, Text2.Text)
Text1.Text = rSult
End Sub

cionci
19-02-2008, 11:16
Funziona ?