Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Psyke1 en 4 Mayo 2010, 00:25 am



Título: [Resuelto] Pulsar mouse
Publicado por: Psyke1 en 4 Mayo 2010, 00:25 am
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
  1. Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  2.    MsgBox "hola"
  3. End sub
  4.  

Gracias!! ;D


Título: Re: [ayuda] Pulsar mouse
Publicado por: xmbeat92 en 4 Mayo 2010, 00:56 am
SubClasifica el objeto en el que quieres que lo detecte o tambien puedes hacer un hook al Mouse


Título: Re: [ayuda] Pulsar mouse
Publicado por: Psyke1 en 4 Mayo 2010, 01:01 am
Utilizo esto:
Código
  1. Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
  2. Dim x As Integer
  3.  
  4. Private Sub Timer1_Timer()
  5.  
  6.    If GetAsyncKeyState(1) = -32767 Then
  7.          x = x +1
  8.    End If
  9.  
  10. End Sub
Pero quiero hacer que si lo mantengo pulsado sume 1 a x varias veces , entiendes??

Salu2! ;D


Título: Re: [ayuda] Pulsar mouse
Publicado por: Psyke1 en 4 Mayo 2010, 14:57 pm
alguien me podria echar una mano??? no creo que sea muy dificil... :huh: :huh:

Muchas gracias! ;D


Título: Re: [ayuda] Pulsar mouse
Publicado por: Nanoc en 6 Mayo 2010, 02:26 am
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


Título: Re: [ayuda] Pulsar mouse
Publicado por: xkiz ™ en 6 Mayo 2010, 05:58 am
Código
  1. Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  2. If Button = vbRightButton Then MsgBox "hola"
  3. End Sub
  4.  


Título: Re: [ayuda] Pulsar mouse
Publicado por: Psyke1 en 6 Mayo 2010, 11:04 am
Código
  1. Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  2. If Button = vbRightButton Then MsgBox "hola"
  3. End Sub
  4.  
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
  1. Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  2.    Dim x As Integer
  3.    If Button = vbRightButton Then x = x + 1
  4. 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


Título: Re: [ayuda] Pulsar mouse
Publicado por: Nanoc en 8 Mayo 2010, 02:16 am
no, no es nada complicado, ya tienes la funcion para capturar el click del ratón, pues ponle el timer y listo


Título: Re: [ayuda] Pulsar mouse
Publicado por: Psyke1 en 8 Mayo 2010, 02:26 am
Ya, le pongo el timer, pero, de esta manera, como sabe el Timer cuando tiene que parar?? :huh:
Código
  1. Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
  2. Dim x As Integer
  3.  
  4. Private Sub Timer1_Timer()
  5.  
  6.    If GetAsyncKeyState(1) = -32767 Then Timer1.Enabled = True
  7.  
  8. 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


Título: Re: [ayuda] Pulsar mouse
Publicado por: Dessa en 8 Mayo 2010, 03:13 am
Hola, Fijate si te sirve


FORM
Código:

Option Explicit

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



MODULO:
Código:

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




Título: Re: [ayuda] Pulsar mouse
Publicado por: Psyke1 en 8 Mayo 2010, 10:54 am
Gracias Dessa!!!!!!!!!!!!!!!!!!!!!!
Funciona!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Salu2! ;D ;D


Título: Re: [Resuelto] Pulsar mouse
Publicado por: Nanoc en 13 Mayo 2010, 18:31 pm
Pues eso utiliza hooks como dije yo que era la forma profesional de hacerlo


Título: Re: [Resuelto] Pulsar mouse
Publicado por: Psyke1 en 13 Mayo 2010, 18:33 pm
Pues eso utiliza hooks de teclado como dije yo que era la forma profesional de hacerlo
AJJAJAJAJAJAJ :xD
Nanoc, esto ya esta resuelto desde hace casi una semana, y lo hice asi en el NRC que puedes ver en el foro!! :laugh:

Salu2! ;)