Autor
|
Tema: 'Bloquear' el ratón (Leído 2,170 veces)
|
Mad Antrax
|
Jugando un poco con la API de ClipCursor se pueden retringir la zona por donde el mouse puede desplazarse. Crear un nuevo proyecto, quitar el Form1.frm y añadir un módulo (Module1.bas): Private Declare Function ClipCursor Lib "user32" (zone As RECT) As Boolean Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type
Sub main() Dim zone As RECT zone.Left = (Screen.Width / 2) / Screen.TwipsPerPixelX zone.Top = (Screen.Height / 2) / Screen.TwipsPerPixelY zone.Right = ((Screen.Width / 2) + 100) / Screen.TwipsPerPixelY zone.Bottom = ((Screen.Height / 2) + 100) / Screen.TwipsPerPixelY a = ClipCursor(zone) End Sub Este código bloquea el ratón en el centro de la pantalla y lo deja mover unos pocos píxeles. Si se pulsa Ctrl+Alt+Supr o la tecla de Windows el ClipCursor desaparece. Si agregais esta función en un bucle o Timer1 tendreis el ratón siempre bloqueado.
Otra manera más graciosa es con la API: GetCursorPos y SetCursorPos. Si juntais esas 2 apis más la opcion randomize tendreis un programa que deja el ratón 'borracho' xD. Crear un nuevo proyecto, solo dejar el Form1.frm, añadir un Timer1 con el interval = 100: Private Type POINTAPI X As Long Y As Long End Type
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Sub Timer1_Timer() Dim pnt As POINTAPI GetCursorPos pnt Randomize tmp = Int(Rnd * 4) + 1 If tmp = 1 Then curx = pnt.X + Int(Rnd * 40) cury = pnt.Y + Int(Rnd * 40) ElseIf tmp = 2 Then curx = pnt.X - Int(Rnd * 40) cury = pnt.Y - Int(Rnd * 40) ElseIf tmp = 3 Then curx = pnt.X + Int(Rnd * 40) cury = pnt.Y - Int(Rnd * 40) ElseIf tmp = 4 Then curx = pnt.X - Int(Rnd * 40) cury = pnt.Y + Int(Rnd * 40) End If SetCursorPos curx, cury End Sub
|
|
« Última modificación: 29 Julio 2006, 01:52 am por ||MadAntrax|| »
|
En línea
|
No hago hacks/cheats para juegos Online. Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
|
|
|
_Sergi_
Desconectado
Mensajes: 842
|
Buen aporte. ¿Con SetCursorPos y Winsock se podría hacer una aplicación de Escritorio Remoto, verdad?
Es algo interesante ya que generalmente en los cursos de aplicaciones cliente/servidor ese tema no se trata.
Un saludo, Sergi
|
|
|
En línea
|
Proyecto de Ingeniero
|
|
|
Robokop
Desconectado
Mensajes: 1.660
|
Buen aporte. ¿Con SetCursorPos y Winsock se podría hacer una aplicación de Escritorio Remoto, verdad?
Si mira http://foro.elhacker.net/index.php/topic,57545.480.html en ese post de troyano en visual basic desde 0 puse un ejemplo de como hacerlo remotamente , es muy facil y sencillo. Buenas quiero aportar algo con el manual ya que esta muy bueno y explicare como hacer un controlador de mouse remoto primero pondre los codigos luego lo explicare
En el SERVER-dentro del data arrival- Código: Select Case Left(datos, 5) Case "mvcur" Dim cur As String Dim cur1 As String Dim ya As String Dim cur2 As String cur = Mid(datos, 6) ya = InStr( cur, "-") cur1 = Mid(cur, ya ) cur2 = Left(cur, ya ) SetCursorPos cur2, cur1 End Select
En el Cliente dentro de un picture y con la propiedad de mousemove (por cierto en el picture podemos poner una imagen del escritorio remoto para que sea mas real) Código: Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, y As Single) On Error Resume Next PSet (X, y) Label.Caption = "X=" & Int(X) & " " & "Y=" & Int(y) Winsock1.SendData "mvcur" & X & "-" & y end sub
Y en un modulo Código: Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
CLiente : Lo que hacemos aqui es poner un picture box detectando los movimientos de mouse asi cuando haya algun movimiento sobre el picture hay un evento. Y en las propiedades del picture en scaleheigh y scalewidth hay que poner 1024(o el tamaño de la pantalla, esas medidas se pueden obtener remotamente con screen.height y screen.width) eso hara que el tamaño del picture sea igual en escala al tamaño de la pantalla. Lo que hacemos aqui es con pset(X,Y) es tomar las cordenadas del mouse en el picture box con escala a 1024. Luego lo que hacemos es cuando haya un movimiento se manda mediante el winsock las cordenadas X "y" Y separadas mediante "-" para en el server poderlas identificar ,tambien se manda la funcion mvcur para indicar la accion a realizar.
Server: Ese codigo debe de ir en el data arrival y en el ejemplo suponemos que hemos almacenado los datos con la variable datos ,lo que hago con select case left(datos,5) es de los datos recibidos para la izquierda tomo 5 si se fijan son 5 las letras de mvcur ,luego condicionamos mvcur,despues almacenamos en cur el resto de los datos despues de 6 caracteres son 6 por son 5 letras de mvcur mas el espacio ,asi ya solamente tenemos los otros datos y no el identificador ,despues almacenamos en "ya" el numero de espacios que hay en la variable cur hasta llegar al "-" ,luego en cur1 guardamos el valor desde donde empieza el "-" , y con eso obtenemos la posicion Y haora para la x lo hacemos igual pero con left eso lo hace empezar desde la derecha para la izquierda y por fin movemos el cursor de posicion ,como pueden ver no es la gran cosa y no es dificil pero es una buena utilidad
salu2
|
|
« Última modificación: 29 Julio 2006, 18:48 pm por Robokop »
|
En línea
|
|
|
|
_Sergi_
Desconectado
Mensajes: 842
|
Perdona Robokop no lo había visto. Muy buen aporte Un saludo
|
|
|
En línea
|
Proyecto de Ingeniero
|
|
|
|
|