Clickear sin mover mouse

Iniciado por BahiereTTi, 27 Julio 2011, 07:44 AM

0 Miembros y 1 Visitante están viendo este tema.

Hasseds

#10
SendMessage (ByVal lParam As Long)

+

Make_lParam


Código (vb) [Seleccionar]


Function Make_lParam(ByVal x As Integer, ByVal y As Integer) As Long
   Make_lParam = (x And &HFFFF&) Or (y * &H10000)
End Function








Sergio Desanti

BahiereTTi

Function Make_lParam(ByVal x As Integer, ByVal y As Integer) As Long
  Make_lParam = (x And &HFFFF&) Or (y * &H10000)
End Function


¿?


Así?

Pero, que en un timer pongo frmmain.make

O que?

Y tendría que poner: X = COORDENADA

Y: Y = COORDENADA

Pero, no entiendo ese código.

La cosa es que en un timer pase eso.

¿Pongo ese código en un timer?

Pero donde modifico las coordenadas?


Ayudaaaa

Hasseds

Código (vb) [Seleccionar]


Option Explicit

Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Sub Form_Load()
  ScaleMode = 3
  Timer1.Interval = 16
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
 
  Static CountClickX15Y15 As Long
 
  If Button = vbLeftButton And x = 15 And y = 15 Then
    CountClickX15Y15 = CountClickX15Y15 + 1
    Caption = CountClickX15Y15
  End If

End Sub
Function Make_lParam(ByVal x As Integer, ByVal y As Integer) As Long
  Make_lParam = x Or (y * &H10000)
End Function

Private Sub Timer1_Timer()
  Call SendMessage(Me.hwnd, &H201, &H0&, Make_lParam(15, 15))
  Call SendMessage(Me.hwnd, &H202, &H0&, Make_lParam(15, 15))
End Sub





Sergio Desanti

Hasseds

#13
.
Sergio Desanti

BahiereTTi

Gracias...

El 1er codigo va en un modulo y el 2do en el form.

Agrego 1 timer 1 command button.

En el modulo, acá:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

  Static CountClickX15Y15 As Long

  If Button = vbLeftButton And x = 630 And y = 390 Then
    CountClickX15Y15 = CountClickX15Y15 + 1
    Caption = CountClickX15Y15
  End If

End Sub


Me tiró a CAPTION  "VARIABLE NO DEFINIDA"

¿Como la declaro y en donde me recomendas?

Hasseds

#15
Olvidate del segundo código... el pimer codigo va en un Form, eso es lo que pediste, como mandar un Click por coordenadas sin mover el mouse !!!

PD:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

Nunca puede ir en un Módulo...





Sergio Desanti

BahiereTTi

Buenisimo, pero dudas.

1ero, para que el command1 abre el Pinball?
Yo no pedí eso :S

2do

Donde configuro que me haga click?
Donde está para poner la coordenada X y la Y?



Hasseds

Olvidate del codigo del Pinball, ya lo quité para q no te confundas, analizá el codigo que te dejé para entender como mandar un Click a una  coordenada específica de un control  sin mover el mouse !!!
Sergio Desanti

BahiereTTi

#18
Buenisimo, pero me podes explicar como funciona?

Porque no lo entiendo.

Mira como me quedo:  
Option Explicit

Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Sub Form_Load()
 ScaleMode = 3
 Timer1.Interval = 16
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

 Static CountClickX15Y15 As Long

 If Button = vbLeftButton And x = 650 And y = 380 Then
   CountClickX15Y15 = CountClickX15Y15 + 1
   Caption = CountClickX15Y15
 End If

End Sub
Function Make_lParam(ByVal x As Integer, ByVal y As Integer) As Long
 Make_lParam = x Or (y * &H10000)
End Function

Private Sub Timer1_Timer()
  Call SendMessage(Me.hwnd, &H201, &H0&, Make_lParam(650, 380))
  Call SendMessage(Me.hwnd, &H202, &H0&, Make_lParam(650, 380))
End Sub





Modifique eso de and y = 15 and x = 15 y lo del timer1  quedo así el timer1:
Private Sub Timer1_Timer()
  Call SendMessage(Me.hwnd, &H201, &H0&, Make_lParam(650, 380))
  Call SendMessage(Me.hwnd, &H202, &H0&, Make_lParam(650, 380))
End Sub

650 = x
380 = y



Pero, sigue sin hacer click en esa coordenada .



Igual, gracias por tratar de ayudarme :S