| 
	
		|  Autor | Tema: [Resuelto] Pulsar mouse  (Leído 6,049 veces) |  
	| 
			| 
					
						| Psyke1 
								Wiki  Desconectado 
								Mensajes: 1.089
								
								     | 
 
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: Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)    MsgBox "hola"End sub 
 Gracias!!  
 
 |  
						| 
								|  |  
								| « Última modificación:  8 Mayo 2010, 10:54 am por *PsYkE1* » |  En línea | 
 
 |  |  |  | 
			| 
					
						| xmbeat92 
								
								 Desconectado 
								Mensajes: 40
								
								   | 
 
SubClasifica el objeto en el que quieres que lo detecte o tambien puedes hacer un hook al Mouse 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein |  |  |  | 
			| 
					
						| Psyke1 
								Wiki  Desconectado 
								Mensajes: 1.089
								
								     | 
 
Utilizo esto: Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As IntegerDim 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!   |  
						| 
								|  |  
								| « Última modificación:  4 Mayo 2010, 14:58 pm por *PsYkE1* » |  En línea | 
 
 |  |  |  |  |  | 
			| 
					
						| Nanoc 
								
								 Desconectado 
								Mensajes: 166
								
								
								
								
								
								   | 
 
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
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| xkiz ™ | 
 
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = vbRightButton Then MsgBox "hola"End Sub 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Psyke1 
								Wiki  Desconectado 
								Mensajes: 1.089
								
								     | 
 
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...    Lo que queria poner es esto: 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 + 1End 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??   Muchas gracias a todos por la ayuda!!   |  
						| 
								|  |  
								| « Última modificación:  7 Mayo 2010, 15:24 pm por *PsYkE1* » |  En línea | 
 
 |  |  |  | 
			| 
					
						| Nanoc 
								
								 Desconectado 
								Mensajes: 166
								
								
								
								
								
								   | 
 
no, no es nada complicado, ya tienes la funcion para capturar el click del ratón, pues ponle el timer y listo |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Psyke1 
								Wiki  Desconectado 
								Mensajes: 1.089
								
								     | 
 
Ya, le pongo el timer, pero, de esta manera, como sabe el Timer cuando tiene que parar??   Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As IntegerDim 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!   |  
						| 
								|  |  
								| « Última modificación:  8 Mayo 2010, 02:51 am por *PsYkE1* » |  En línea | 
 
 |  |  |  | 
			| 
					
						| Dessa 
								 
								
								 Desconectado 
								Mensajes: 624
								
								   | 
 
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
 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 Adrian Desanti |  |  |  |  |  
 
	
 
   |