Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - calk9

#41
Programación Visual Basic / Re: SendMessage
20 Septiembre 2011, 00:53 AM
Hola, con respecto a tu respuesta: sería buscar una cadena dentro de una imágen como tu dices puede ser... quisiera saber si es posible.

Saludos.
#42
Programación Visual Basic / Re: Píxeles y Bucle For
20 Septiembre 2011, 00:51 AM
Cita de: Hasseds en 19 Septiembre 2011, 04:01 AM
mmm... revisá si esto  puede servir, en caso q sirva... te toca optimizar.

Código (vb) [Seleccionar]


Option Explicit

Private Sub Form_Load()
 Call SetWindowPos(Me.hwnd, -1, 0, 0, 0, 0, &H2 Or &H1)
 AutoRedraw = True
 FontBold = True
 BackColor = &HAA431B
 ForeColor = vbWhite
 StartHook
End Sub

Private Sub Form_Unload(Cancel As Integer)
 StopHook
End Sub





Código (vb) [Seleccionar]


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 CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Public 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

Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y 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, &H0&)
   lDC = GetWindowDC(&H0&)
End Sub


Public Sub StopHook()
   Call UnhookWindowsHookEx(hHook)
   hHook = &H0&
   Call ReleaseDC(&H0&, lDC)
End Sub


Private Function MouseProc(ByVal ncode As Long, ByVal wParam As Long, lParam As POINTAPI) As Long
   
   Dim lColor As Long
   lColor = GetPixel(lDC, lParam.x, lParam.y)
   
   'If Not lColor < 0 Then
     'Form1.Cls
     'Form1.Print Hex(lColor)
     If lColor = &HAA431B Then
       Form1.Caption = "SI"
     Else
       Form1.Caption = "NO"
     End If
   'End If
 
 MouseProc = CallNextHookEx(hHook, ncode, wParam, lParam)

End Function






Excelente justo lo que necesitaba! Gracias.
#43
Programación Visual Basic / Re: SendMessage
19 Septiembre 2011, 03:35 AM
Pues eso es lo que busco... pero mas bien sería buscar la cadena en el handle y esa posición especificarla en el lParam. Con respecto al Pixel podría hacerse algo?
#44
Programación Visual Basic / Re: Píxeles y Bucle For
19 Septiembre 2011, 03:33 AM
Sep pero para un proceso que no es el mio si necesito inyectar una DLL. Como podría hookear el mouse, sin especificar un determinado hwnd, simplemente los mensajes del mouse?

Saludos
#45
Programación Visual Basic / Re: Píxeles y Bucle For
19 Septiembre 2011, 00:46 AM
Jaj no me había fijado en eso, ya lo saqué del bucle pero el problema no era eso sino la sentencia if y el ver el color del pixel actual en donde se encuentra el mouse. Yo pense en ponerlo en un timer el código para verificar el color del pixel pero el bucle for es mucho más rapido que 1 milisegundo (que es el menor intervalo de un timer). Pues entonces digo, hago un hook y que al detectar WM_MOUSEMOVE verifique el color del pixel así estaría a la misma velocidad que el bulce... supongo jej. Pero necesito hacer un hook al mouse, no a mi aplicación y de otra ni hablar ya que tendría que inyectar una DLL... y no en basic  :rolleyes:.

Alguna idea?  :P

Saludos.
#46
Programación Visual Basic / Re: Píxeles y Bucle For
18 Septiembre 2011, 23:45 PM
Pues sigo teniendo el mismo problema. El API SetCursorPos no es el problema, ese bucle lo hace en unas milesimas de segundo. El problema es el ver el color del pixel.
Gracias igual! ;D

Sigo esperando respuestas...

P.D: Te importaría darme tu msn?
#47
Programación Visual Basic / Re: Píxeles y Bucle For
18 Septiembre 2011, 21:26 PM
Aver si me pueden ayudar con mi planteo...
#48
Programación Visual Basic / Re: Píxeles y Bucle For
18 Septiembre 2011, 20:56 PM
Pues es en tiempo real... como podría hacer?
#49
Programación Visual Basic / Píxeles y Bucle For
18 Septiembre 2011, 20:40 PM
Buenas a todos, estoy realizando una aplicacion la cual en un bucle for recorre, moviende el mouse, una determinada área y al encontrar un píxel con determinado color, se frene. EL PROBLEMA es que, al recorrer el área moviendo el cursor con el bucle previamente mencionado anda todo perfecto, con una rapidez considerable, en cambio cuando "coloco" el código para verificar si encuentra el píxel lo hace un 90% más lento. Este es mi código:

Código (vb) [Seleccionar]
Dim iX As Integer
Dim iY As Integer
Dim hdc As Long, pxColor As Double

   Call GetCursorPos(Mouse)
   For iX = Mouse.x To Mouse.x + 100
       For iY = Mouse.y To Mouse.y + 75
           Call SetCursorPos(iX, iY)
           'Hasta acá todo bien, lo que viene ahora es lo que lenta muchísimo mi aplicación...
           
           hdc = GetDC(0)
           pxColor = GetPixel(hdc, Mouse.x, Mouse.y)
           ReleaseDC 0, hdc
           Me.Caption = Hex(pxColor)
           If Me.Caption = "AA431B" Then
               Exit For
           End If
           '//
       Next iY
   Next iX


No se cual es el problema, por qué lo hace muchísimo mas lento. Ya que sin verificar el color lo hace en unas milésimas de segundo, y luego con el código para verificar tarda unos 20 o 30 en recorrer el mouse todo el área. Pues ni me imagino cuando haga áreas mas grandes.

Saludos.
#50
Programación Visual Basic / Re: SendMessage
18 Septiembre 2011, 18:02 PM
A un determinado handle claro que si. Pero a alguna determinada cadena o algo parecido?