Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: daviddavo en 4 Abril 2015, 03:23 am



Título: Mover cursor con visual basic
Publicado por: daviddavo en 4 Abril 2015, 03:23 am
Hola, no tengo ni idea de Visual Basic, pero estoy haciendo un script. Y necesito hacer que el cursor se mueva 100 px hacia abajo (-100x) y 100 pixeles hacia la derecha (+100y)
¿Sabeis como podría hacer esto?

Gracias de antemano


Título: Re: Mover cursor con visual basic
Publicado por: Br1ant en 4 Abril 2015, 05:39 am
Con:

Código
  1. Windows.Forms.Cursor.Position = New Point(X, Y)

Saludines.


Título: Re: Mover cursor con visual basic
Publicado por: Eleкtro en 4 Abril 2015, 15:50 pm
Estamos en la sección Scripting, ¿te refieres a VBS, VBA, VB, o VB.Net?, acláralo.

El código que te han mostrado es para VisualBasic.Net

En caso de referirte a VBS (VisualBasicScript) no es posible realizar esa tarea, para ello necesitarías llamar a la API de Windows y solo puedes hacerlo mediante librerías de terceros que añaden soporte adicional a VBS, una alternativa sería utilizar la aplicación RunDll32 desde VBS, pero solo funcionaría con funciones que tuviesen una firma específica, no es el caso de la función SetCursorPos.

Saludos


Título: Re: Mover cursor con visual basic
Publicado por: daviddavo en 6 Abril 2015, 09:37 am
Estamos en la sección Scripting, ¿te refieres a VBS, VBA, VB, o VB.Net?, acláralo.

El código que te han mostrado es para VisualBasic.Net

En caso de referirte a VBS (VisualBasicScript) no es posible realizar esa tarea, para ello necesitarías llamar a la API de Windows y solo puedes hacerlo mediante librerías de terceros que añaden soporte adicional a VBS, una alternativa sería utilizar la aplicación RunDll32 desde VBS, pero solo funcionaría con funciones que tuviesen una firma específica, no es el caso de la función SetCursorPos.

Saludos

Me refiero a vbs, perdón por no haberlo aclarado


Título: Re: Mover cursor con visual basic
Publicado por: daviddavo en 6 Abril 2015, 09:42 am
Con:

Código
  1. Windows.Forms.Cursor.Position = New Point(X, Y)

Saludines.

Ya, pero me refiero de forma relativa.
Que lo meuva 50 pixeles abajo y 50 pixeles hacia la derecha


Título: Re: Mover cursor con visual basic
Publicado por: Br1ant en 6 Abril 2015, 11:28 am
Bueno, ya te lo dijo Elektro.

Citar
En caso de referirte a VBS (VisualBasicScript) no es posible realizar esa tarea, para ello necesitarías llamar a la API de Windows y solo puedes hacerlo mediante librerías de terceros que añaden soporte adicional a VBS, una alternativa sería utilizar la aplicación RunDll32 desde VBS, pero solo funcionaría con funciones que tuviesen una firma específica, no es el caso de la función SetCursorPos.

Pero igual te dejo un código que usé hace años...

Código
  1. RunDll32.SetCursorPos 50, 50

No veo una etiqueta para VBS, Lol.

La verdad que no me acuerdo mucho de esto, sólo experimenté con SetCursorPos un par de veces. Puede que me equivoque.
Edito. Para usar la función necesitas importar la DLL, no sé como será en VBS. En VB.NET sería:

Código
  1. Dim RunDll32 = GetObject("C:\Windows\System32\user32.dll")

¡Saludines!


Título: Re: Mover cursor con visual basic
Publicado por: Eleкtro en 6 Abril 2015, 17:21 pm
Buenas

Cómo ya expliqué, por mucho que pueda costar de "creer", VBS es un lenguaje simple e inutil, no hay modo alguno de importar una función de la WinAPI en VBS, no sin componentes COM de terceros que añadan soporte adicional para esa característica, cómo por ejemplo WSHDynaCall.

Cómo también expliqué, no se puede utilizar la función 'SetCursorPos' desde la aplicación RunDll32.exe, ya que dicha función tiene dos parámetros (x, y) que no concuerdan con la firma necesaria que debe tener una función compatible con la interfáz RunDll32:
INFO: Windows Rundll and Rundll32 Interface (http://support.microsoft.com/en-us/kb/164787)

Por ende, al intentar llamar la función 'SetCursorPos' desde RunDll32, los valores que se pasan a los parámetros (x, y) serán valores aleatorios, igual que sucede por ejemplo con la función 'SwapMouseButton' donde el valor que se le pasa siempre será positivo ...por mucho que le pases un "0" para revertir el cambio.

La solución más eficiente en estas circunstancias sería utilizar un lenguaje capacitado para dicha tarea,
una solución muy sencilla sería utilizando VB.Net/C# siguiendo el primer ejemplo mostrado por @bubble1 ya que ni siquiera necesitas importar la WinAPI para posicionar el mouse.


Saludos!