elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 01:06  


Tema destacado: Entra al canal IRC oficial de #elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  MoveMouse [SRC]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: MoveMouse [SRC]  (Leído 533 veces)
Tenient101

Desconectado Desconectado

Mensajes: 127


Ver Perfil
MoveMouse [SRC]
« en: 4 Octubre 2011, 09:36 »

Bueno... estaba un poco aburrido y decidi crear esta funcion para mover el puntero arrastrandolo de una coordenada a otra, el uso... ps ustedes se lo dan  :xD

Código
Option Explicit
 
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 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
 
Public Function MoveMouse(ByVal FinalX As Long, ByVal FinalY As Long, _
Optional ByVal InitialX As Long = -1, Optional ByVal InitialY As Long = -1, Optional ByVal TimeToWait As Long = 5) As Boolean
On Error GoTo err
 
Dim PosActual           As POINTAPI
Dim I                   As Long
Dim DX                  As Long
Dim DY                  As Long
Dim P                   As Double
Dim StepVal             As Integer
 
           GetCursorPos PosActual
 
           If InitialX = -1 Then InitialX = PosActual.X
           If InitialY = -1 Then InitialY = PosActual.Y
 
           DX = (FinalX - InitialX)
           DY = (FinalY - InitialY)
 
           P = (DY / DX)
 
           If (DX < 0) Then StepVal = -1 Else StepVal = 1
 
           For I = 1 To DX Step StepVal
               SetCursorPos InitialX + I, InitialY + Round((I * P))
               Sleep TimeToWait
           Next
 
           MoveMouse = True
Exit Function
err:
End Function

Ejemplo de uso:
Código
MoveMouse Screen.Width / Screen.TwipsPerPixelX, Screen.Height / Screen.TwipsPerPixelY, 0, 0
 


Salu2!!


En línea
LordByte64

Desconectado Desconectado

Mensajes: 1


64 bits


Ver Perfil
Re: MoveMouse [SRC]
« Respuesta #1 en: 5 Octubre 2011, 10:17 »

Gracias, lo miraré más tarde cuando esté en casa  :D


En línea

~ LordByte64
Elemental Code


Desconectado Desconectado

Mensajes: 499


Im beyond the system


Ver Perfil
Re: MoveMouse [SRC]
« Respuesta #2 en: 5 Octubre 2011, 11:27 »

en la funcion pide los datos en una pointapi
me parece que seria mas comodo ::)
En línea

Tenient101

Desconectado Desconectado

Mensajes: 127


Ver Perfil
Re: MoveMouse [SRC]
« Respuesta #3 en: 6 Octubre 2011, 06:06 »

en la funcion pide los datos en una pointapi
me parece que seria mas comodo ::)

Ok, gracias por el punto.


Salu2!  :D
En línea
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.831


I'Love...!¡.


Ver Perfil WWW
Re: MoveMouse [SRC]
« Respuesta #4 en: 6 Octubre 2011, 08:38 »

Revisa mejor el codigo... analisalo mas a fondo a simple vista te puedo decir muchos errores logicos...

* GetCursorPos() deberia llamarse solo si se requiere...
* las variables con prefijo InitialX... imagina que meto -888...
* P = (DY / DX)  sustituye / por \ y quita la funcion Round()... y asi declara a P como long...

* Por norma la 1era palabra del nombre de una palabra es minuscula... la siguiente palabra la 1ra letra es mayuscula seguida de minusculas...

Dim iNombre as integer
y/o
Dim nombreUsuarioX as string

las constantes son completamente en mayusculas... es por ello lo que te menciono...

Dulces Lunas!¡.
En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
Tenient101

Desconectado Desconectado

Mensajes: 127


Ver Perfil
Re: MoveMouse [SRC]
« Respuesta #5 en: 6 Octubre 2011, 09:43 »



* GetCursorPos() deberia llamarse solo si se requiere...
* las variables con prefijo InitialX... imagina que meto -888...
* P = (DY / DX)  sustituye / por \ y quita la funcion Round()... y asi declara a P como long...


1.- Lo pensé pero por que no es un codigo que se necesite eficiencia en rapidez lo deje asi  :xD
2.- No tira error si meten numeros negativos, y si hago la comparación de que es un numero negativo tendria que compara si X o Y esta en el rango de las medidas del monitor por si estas son menores
3.- Al usar \ con la variable long se redondea antes de hacer la multiplicación de la proporcion y esto hace que se coma unos decimales y pierda el rumbo de donde deberia ir

Gracias por los datos, salu2 !
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines