Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: Sanlegas en 4 Octubre 2011, 09:36 AM

Título: MoveMouse [SRC]
Publicado por: Sanlegas en 4 Octubre 2011, 09:36 AM
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 (vb) [Seleccionar]
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 (vb) [Seleccionar]
MoveMouse Screen.Width / Screen.TwipsPerPixelX, Screen.Height / Screen.TwipsPerPixelY, 0, 0



Salu2!!
Título: Re: MoveMouse [SRC]
Publicado por: LordByte64 en 5 Octubre 2011, 10:17 AM
Gracias, lo miraré más tarde cuando esté en casa  :D
Título: Re: MoveMouse [SRC]
Publicado por: Elemental Code en 5 Octubre 2011, 11:27 AM
en la funcion pide los datos en una pointapi
me parece que seria mas comodo ::)
Título: Re: MoveMouse [SRC]
Publicado por: Sanlegas en 6 Octubre 2011, 06:06 AM
Cita de: Elemental Code en  5 Octubre 2011, 11:27 AM
en la funcion pide los datos en una pointapi
me parece que seria mas comodo ::)

Ok, gracias por el punto.


Salu2!  :D
Título: Re: MoveMouse [SRC]
Publicado por: BlackZeroX en 6 Octubre 2011, 08:38 AM
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!¡.
Título: Re: MoveMouse [SRC]
Publicado por: Sanlegas en 6 Octubre 2011, 09:43 AM
Cita de: BlackZeroX▓▓▒▒░░ en  6 Octubre 2011, 08:38 AM


* 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 !