Autor
|
Tema: mouse (x, y) de un picture, ayuda porfas (Leído 4,548 veces)
|
elmatador2
Desconectado
Mensajes: 29
|
hola gente, tengo este codigo que va pixel por pixel en la pantalla viendo el color y en un color determinado hace click, modifique el codigo para q no sea moviendo el mouse buscando el color, que lo busque de forma automatica... ahora necesito que al encontrar el color valla a esa posicion, pero se me va a la posicion de la pantalla entera, pero si modifico la parte del codigo resaltado no funciona de la forma q necesito... tiene q ver las aplicaciones que estan sobre ese picture tambien para tomar sus colores... este es el codigo... Private Sub Timer1_Timer() Dim tPOS As POINTAPI Dim sTmp As String Dim lColor As Long Dim lDC As Long For tPOS.y = Picture1.ScaleHeight = 0 To Picture1.ScaleHeight - 1 For tPOS.x = Picture1.ScaleWidth = 0 To Picture1.ScaleWidth - 1 lDC = GetWindowDC(0) Call GetPixel(HDC, tPOS.x, tPOS.y) ' este <--------------------- lColor = GetPixel(Picture1.HDC, tPOS.x, tPOS.y) sTmp = Right$("000000" & Hex(lColor), 6) Me.Caption = " R:" & Right$(sTmp, 2) & " G:" & Mid$(sTmp, 3, 2) & " B:" & Left$(sTmp, 2) Label1.Caption = "" & tPOS.x & " - " & tPOS.y & "" If Right$(sTmp, 2) = "FF" And Mid$(sTmp, 3, 2) = "FF" And Left$(sTmp, 2) = "FF" Then Click tPOS Espera (5) End If If tPOS.x = 320 Then Stop If tPOS.y = 6 Then Stop Espera (0.011) Next tPOS.x Espera (0.011) Next tPOS.y End Sub
y esta es la parte del mouse Private Sub Click(p As POINTAPI) 'p.X and p.Y in absolute coordinates 'Put the mouse on the point SetCursorPos p.x, p.y 'esta parte me lleva a (x, Y) pero de la pantalla completa y necesito q tome las coordenadas dentro del picture 1 mouse_event MOUSEEVENTF_ABSOLUTE, p.x, p.y, 0, GetMessageExtraInfo() mouse_event MOUSEEVENTF_LEFTDOWN, p.x, p.y, 0, GetMessageExtraInfo() mouse_event MOUSEEVENTF_LEFTUP, p.x, p.y, 0, GetMessageExtraInfo() End Sub
espero se entienda mi conflicto, desde ya muchas gracias.
|
|
« Última modificación: 6 Julio 2016, 07:57 am por elmatador2 »
|
En línea
|
|
|
|
tincopasan
Desconectado
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
Creo que estás haciendo mucho copy-paste. 1)Intenta creando dos variables globales como POSX y POSY y otra sobre= boolean 2)dentro de la función del picturebox.mousemove asigna a posx = x y posy=y , a sobre true 3)dentro form.mousemove sobre = false 4)ahora dentro de la función click crea unas condiciones: si sobre = verdadero mostrá posx y posy sino mostra x y
|
|
|
En línea
|
|
|
|
elmatador2
Desconectado
Mensajes: 29
|
gracias por responder, no se si se entendio bien lo q hice... falta parte del codigo... en el picture meto una aplicacion ejecutada. la cual si solo tomo el X, Y del picture no me toma el ejecutable dentro de el, por eso tome las que ocupa el picture pero por fuera, y al momento de indicar al mouse que se posicione en el picture (cuando automaticamente encontro un punto del color especifico), por ejemplo en el punto "0" del picture, esas coordenadas me manda al punto "0" de la pantalla en su lugar... Private Sub Command1_Click() If sobre = True Then Print posx, posy Print X, Y End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) sobre = False End Sub Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) posx = X posy = Y sobre = True End Sub
este es el codigo q me dijiste, pero no veo como ponerlo en lo que yo verdaderamente necesito. creo que no es lo que busco, yo quiero hacer que el puntero del mouse se mueva automaticamete al punto del picture encontrado, pero de la forma que lo hago me manda al punto que necesito, pero en vez de ser del picture lo hace en el form. o capas yo no veo como implementarlo, de ser asi podrias guiarme un poco?
|
|
|
En línea
|
|
|
|
tincopasan
Desconectado
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
¿me estás charlando con lo de command1? y es más que obvio que falta code Private Sub Click(p As POINTAPI) 'p.X and p.Y in absolute coordinates 'Put the mouse on the point SetCursorPos p.x, p.y 'esta parte me lleva a (x, Y) pero de la pantalla completa y necesito q tome las coordenadas dentro del picture 1 mouse_event MOUSEEVENTF_ABSOLUTE, p.x, p.y, 0, GetMessageExtraInfo() mouse_event MOUSEEVENTF_LEFTDOWN, p.x, p.y, 0, GetMessageExtraInfo() mouse_event MOUSEEVENTF_LEFTUP, p.x, p.y, 0, GetMessageExtraInfo() End Sub
Private Sub Click(p As POINTAPI) 'p.X and p.Y in absolute coordinates 'Put the mouse on the point if sobre = True then SetCursorPos p.posx, p.posy 'esta parte me lleva a (x, Y) pero de la pantalla completa y necesito tome las coordenadas dentro del picture 1 mouse_event MOUSEEVENTF_ABSOLUTE, p.x, p.y, 0, GetMessageExtraInfo() mouse_event MOUSEEVENTF_LEFTDOWN, p.x, p.y, 0, GetMessageExtraInfo() mouse_event MOUSEEVENTF_LEFTUP, p.x, p.y, 0, GetMessageExtraInfo() else etc. para no repetir end if End Sub
|
|
|
En línea
|
|
|
|
elmatador2
Desconectado
Mensajes: 29
|
perdon, pero sigue llevandome al punto incorrecto, es mas... sigue saliendo de los terminos del picture1 lo q quiero es q respete su: For tPOS.y = Picture1.ScaleHeight = 0 To Picture1.ScaleHeight - 1 For tPOS.x = Picture1.ScaleWidth = 0 To Picture1.ScaleWidth - 1
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
Hola Según he entendido, el problema es que medianle el algoritmo de iteración de píxeles del picturebox, obtienes unas coordenadas de la pantalla, pero tu quieres obtener las coordenadas dentro del area cliente de ese control picturebox?. Sea como sea, puedes traducir un punto de la pantalla a un punto del área cliente de ese picturebox, y viceversa, utilizando las siguientes funciones win32 según el tipo de punto que tengas como referencia: Un ejemplo de uso escrito en VB.NET para traducir unas coordenadas del área cliente de un control, a la pantalla: Dim pcbHwnd As IntPtr = Me.PictureBox1.Handle Dim scrPt As Win32Point NativeMethods.ClientToScreen(pcbHwnd, scrPt) Cursor.Position = scrPt
PD: Esto en VB.NET sería más simple y sin recurrir a código no administrado, pero por el código que has publicado deduzco que estás utilizando el antiguo VB6. Saludos
|
|
« Última modificación: 8 Julio 2016, 00:18 am por Eleкtro »
|
En línea
|
|
|
|
elmatador2
Desconectado
Mensajes: 29
|
si, muchas gracias por tu respuesta, si es vb6... ahi me pongo a leer esa funcion. gracias por tu ayuda.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda en vb con hiperviculos e imagen o picture
Programación Visual Basic
|
Red Mx
|
0
|
1,355
|
21 Febrero 2006, 16:19 pm
por Red Mx
|
|
|
Ayuda con esto porfas!!
Scripting
|
TheTitan
|
4
|
2,794
|
16 Agosto 2007, 20:54 pm
por TheTitan
|
|
|
ayuda porfas bugs wow 3.2.2a ayuda
Juegos y Consolas
|
marce_1994
|
2
|
3,324
|
25 Febrero 2010, 16:04 pm
por Ariath
|
|
|
[Solucionado] Ayuda Dibujar en picture con el hwnd
Programación Visual Basic
|
Cromatico
|
4
|
2,653
|
18 Noviembre 2010, 05:20 am
por Cromatico
|
|
|
[Aporte] [VS2012] Mouse XY (Devuelve las coordenadas del mouse)
Programación General
|
Eleкtro
|
3
|
5,517
|
8 Noviembre 2012, 14:12 pm
por Danyfirex
|
|