[Resuelto] Pulsar mouse

Iniciado por Psyke1, 4 Mayo 2010, 00:25 AM

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

Psyke1

HOola, miren que facil se lo voy a poner con una duda tan sencilla, necesito saber como hago para que si pulso el boton derecho del raton salga un msgbox, por ejemplo... Tienen que tener en cuenta que no es sobre un formulario, que seria asi:
Código (vb) [Seleccionar]

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
   MsgBox "hola"
End sub


Gracias!! ;D

xmbeat92

SubClasifica el objeto en el que quieres que lo detecte o tambien puedes hacer un hook al Mouse
El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein

Psyke1

#2
Utilizo esto:
Código (vb) [Seleccionar]

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Dim x As Integer

Private Sub Timer1_Timer()

   If GetAsyncKeyState(1) = -32767 Then
         x = x +1
   End If
   
End Sub

Pero quiero hacer que si lo mantengo pulsado sume 1 a x varias veces , entiendes??

Salu2! ;D

Psyke1

alguien me podria echar una mano??? no creo que sea muy dificil... :huh: :huh:

Muchas gracias! ;D

Nanoc

Obviamente con una api que captura las teclas asincronamente no lo vas a conseguir, esa api se suele utilizar en keyloggers simples en conjunto con getkeystate() creo.

la forma profesional seria hacer un hook de teclado.
La forma sencilla seria buscar la api apropiada, si es que existe alguna.

Espero haberte ayudado

xkiz ™

Código (vb) [Seleccionar]

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbRightButton Then MsgBox "hola"
End Sub

Psyke1

#6
Cita de: xkiz en  6 Mayo 2010, 05:58 AM
Código (vb) [Seleccionar]

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbRightButton Then MsgBox "hola"
End Sub
Esto es lo que no me funciona, aunque agradezco la ayuda xkiz... Es lo que queria poner en principio, pero me confundi... :laugh: Lo que queria poner es esto:

Código (vb) [Seleccionar]

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   Dim x As Integer
   If Button = vbRightButton Then x = x + 1
End Sub

Haber si me explico mejor:
Tengo un Timer con un intervalo de 500.
Si mantengo presionado el btn derecho del ratón en cualquier ventana se activa el Timer y cada 500 ms suma 1 a x, en el momento que deje de presionar el btn derecho del raton, se desactiva el Timer.


Creo que ahora me explique bastante bien, y como ya he dicho no tiene por que ser muy complejo de hacer, no?? :huh:

Muchas gracias a todos por la ayuda!! ;D

Nanoc

no, no es nada complicado, ya tienes la funcion para capturar el click del ratón, pues ponle el timer y listo

Psyke1

#8
Ya, le pongo el timer, pero, de esta manera, como sabe el Timer cuando tiene que parar?? :huh:
Código (vb) [Seleccionar]

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Dim x As Integer

Private Sub Timer1_Timer()

   If GetAsyncKeyState(1) = -32767 Then Timer1.Enabled = True

End Sub

Pongo esto porque no solo es al hacer click en el formulario, sino en cualquier ventana...
Deberia parar cuando deje de presionar el btn derecho, y mucho m temo que no se hacer eso y he estado buscnd... :-(

Gracias x la ayuda! :D

Dessa

Hola, Fijate si te sirve


FORM


Option Explicit

Private Sub Form_Load()
  Me.AutoRedraw = True
  StartHook
End Sub
Private Sub Form_Unload(Cancel As Integer)
  StopHook
End Sub




MODULO:


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

Dim hHook As Long

Public Sub StartHook()
    hHook = SetWindowsHookEx(14, AddressOf MouseProc, App.hInstance, 0)
End Sub

Public Sub StopHook()
    Call UnhookWindowsHookEx(hHook)
End Sub

Private Function MouseProc(ByVal nCode As Long, ByVal wParam As Long, lParam As Long) As Long
    'On Error Resume Next
    If wParam = 516 Then
      Form1.Print "CLICK BOTON DERECHO"
    ElseIf wParam = 517 Then Form1.Print "SOLTÓ BOTON DERECHO"
    ElseIf wParam = 513 Then Form1.Print "CLICK BOTON IZQUIERDO"
    ElseIf wParam = 514 Then Form1.Print "SOLTÓ BOTON IZQUIERDO"
    ElseIf wParam = 519 Then Form1.Print "CLICK BOTON MEDIO"
    ElseIf wParam = 520 Then Form1.Print "SOLTÓ BOTON MEDIO"
    End If
   
    Form1.Caption = wParam
End Function



Adrian Desanti