Autor
|
Tema: Color del Pixel en donde está el Mouse (Leído 3,702 veces)
|
Dessa
Desconectado
Mensajes: 624
|
'Hola alguien me puede ayudar para saber de que color es el pixel en que se encuentra el puntero del mouse, estoy intentando con el sig.code pero no sale. Option Explicit Private Type POINTAPI X As Long Y As Long End Type 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 Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Dim ret As Long Dim Handle As Long Dim Cor As POINTAPI Dim hhdc As Long Private Sub Form_Load() Timer1.Interval = 10 End Sub Private Sub Timer1_Timer()
'Obtengo la coordenada del Mouse ret = GetCursorPos(Cor) 'Recupero el HWND del comntrol asociado a esa coordenada Handle = WindowFromPoint(Cor.X, Cor.Y) 'Obtengo el hdc del control hhdc = GetDC(Handle) Label1.Caption = Hex(GetPixel(hhdc, Cor.X, Cor.Y)) Label2 = Cor.X & " " & Cor.Y
End Sub
'Gracias & Saludos
|
|
|
En línea
|
Adrian Desanti
|
|
|
seba123neo
|
Hola, Dessa proba este code: Option Explicit Private Type POINTAPI x As Long y As Long End Type Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long Private Sub Form_Load() Timer1.Interval = 100 End Sub Private Sub Timer1_Timer() Dim tPOS As POINTAPI Dim sTmp As String Dim lColor As Long Dim lDC As Long lDC = GetWindowDC(0) Call GetCursorPos(tPOS) lColor = GetPixel(lDC, tPOS.x, tPOS.y) Me.BackColor = lColor sTmp = Right$("000000" & Hex(lColor), 6) Me.Caption = "R:" & Right$(sTmp, 2) & " G:" & Mid$(sTmp, 3, 2) & " B:" & Left$(sTmp, 2) End Sub
saludos.
|
|
« Última modificación: 30 Octubre 2008, 00:41 am por seba123neo »
|
En línea
|
|
|
|
Dessa
Desconectado
Mensajes: 624
|
Perfecto Seba , Gracias (otra vez).
|
|
« Última modificación: 6 Octubre 2009, 17:12 pm por Dessa »
|
En línea
|
Adrian Desanti
|
|
|
TomaSs
Desconectado
Mensajes: 101
|
Una preguntilla, y no habría alguna manera de hacer eso pero sin un timer??? sino que directamente lo haga al mover el raton??? esk para el evento mousemove se tiene que indicar sobre que objeto se va ha mover (Ej: picture1_mousemove), y si es para toda la pantalla, o todo el formulario dificil... Aver si alguien podría ayudarme. Muchas gracias de antemano! 
|
|
|
En línea
|
|
|
|
LeandroA
|
Este tema esta algo viejo segun las reglas no se puede revivir. pero bueno para la proxima crea un nuevo post y pode hacer referencia al link bueno la respuesta es utilizando hook en un modulo .bas Option Explicit Private Declare Function SetWindowsHookEx Lib "user32.dll" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long Private Declare Function UnhookWindowsHookEx Lib "user32.dll" (ByVal hHook As Long) 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 GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function ReleaseDC Lib "user32.dll" (ByVal hwnd As Long, ByVal hdc As Long) As Long Private Const WH_MOUSE_LL As Long = 14 Private Type POINTAPI x As Long y As Long End Type Dim hHook As Long Dim lDC As Long Public Sub StartHook() hHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf MouseProc, App.hInstance, 0) lDC = GetWindowDC(0&) End Sub Public Sub StopHook() Call UnhookWindowsHookEx(hHook) ReleaseDC 0&, lDC End Sub Private Function MouseProc(ByVal nCode As Long, ByVal wParam As Long, lParam As POINTAPI) As Long On Error Resume Next Dim lColor As Long lColor = GetPixel(lDC, lParam.x, lParam.y) If lColor = -1 Then ReleaseDC 0&, lDC lDC = GetWindowDC(0&) lColor = GetPixel(lDC, lParam.x, lParam.y) End If Form1.BackColor = lColor End Function
y para el form1 Option Explicit Private Sub Form_Load() StartHook End Sub Private Sub Form_Unload(Cancel As Integer) StopHook End Sub
Saludos.
|
|
« Última modificación: 30 Marzo 2010, 02:26 am por LeandroA »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Realizar accion al cambiar de color un pixel
Programación Visual Basic
|
Demereth
|
2
|
2,668
|
3 Septiembre 2012, 20:36 pm
por Yoghurt
|
|
|
Sacar el color del Pixel que se ha pulsado con VB.NET
.NET (C#, VB.NET, ASP)
|
z3nth10n
|
1
|
2,637
|
17 Julio 2013, 23:57 pm
por Eleкtro
|
|
|
Localizar pixel de cierto color dentro de la pantalla
.NET (C#, VB.NET, ASP)
|
z3nth10n
|
3
|
2,189
|
28 Julio 2013, 15:11 pm
por Eleкtro
|
|
|
Color de píxel en pantalla
Ingeniería Inversa
|
epicteto
|
3
|
2,155
|
27 Enero 2014, 19:46 pm
por tincopasan
|
|
|
Duda/Consejos vb6 - Autocliker pixel color /Aim
Programación Visual Basic
|
TornadoXml
|
3
|
3,155
|
30 Abril 2019, 00:55 am
por Eleкtro
|
|