[Solucionado]Mini-vbscript aumentar/disminuir velocidad del raton DPI automatico

Iniciado por Anonymous250, 22 Agosto 2014, 16:11 PM

0 Miembros y 3 Visitantes están viendo este tema.

Anonymous250

Hola buenas,lo e intentado por mi cuenta leyendo en el foro sobre vbs ,soy un nobato mas que otra cosa.El tutorial que lei y quizas no se me quedo todo.

http://foro.elhacker.net/scripting/tutorial_vbscript-t229032.0.html

La finalidad que quiero que tenga este script: es para cuando este viendo una pelicula ,no me enseñe el panel de control de dicho programa de video por que el raton tenga mucha sensibilidad.Entonces crearia un vbs con dos botones variables si o no,o aumentar disminuir ,o 1 y 2 .
1. que disminuyera al minimo la velocidad del puntero/raton .
2.que aumentara la velocidad del puntero/raton al medio al 6,es como yo lo tengo,osea el 6 empezando por la izquierda,5 pulsasiones de teclado a la derecha en su menu.

Localizando el programa Propiedades Mouse ,que esta en

C:\Windows\System32

main.cpl


Abrimos las propiedades del mouse,si nos dirigimos a Opciones de puntero,seleccione la velocidad del puntero,eso es lo que quiero toquetear,esa variable.

Decir que nose si hay una manera mas sencilla de hacer esto,o un programa,pero bueno por lo menos e aprendido algo de vbscript, como yo lo e intentado es por medio de Sendkeys y con todas las pulsaciones que tendria que hacer,pero sin resultado.

bueno a ver si alguien me da alguna ayuda o consejo ,sera bien recibido,gracias.

Eleкtro

#1
Cita de: Anonymous250 en 22 Agosto 2014, 16:11 PMlo e intentado es por medio de Sendkeys y con todas las pulsaciones que tendria que hacer,pero sin resultado.

En un lenguaje simple como es VBS la manera que has mencionado es la única que puedes llevar a cabo.

También puedes recurrir a una modificación del registre, el valor [HKEY_CURRENT_USER\Control Panel\Mouse]:MouseSensitivity, pero esto no tomará efecto hasta el siguiente reinicio de sesión.

O lo haces mediante sendkeys y muestras tu código en VBS para que te podamos ayudar a corregir las pulsaciones que realizaste, o te planteas utilizar un lenguaje capacitado para la tarea, ya que es necesario hacer una llamada a la función SystemParametersInfo de la WinAPI y pasarle el parámetro SPI_SETMOUSESPEED.

Info: http://msdn.microsoft.com/en-us/library/windows/desktop/ms724947%28v=vs.85%29.aspx

Nota: Puedes llamar a la API de Windows desde VBS, pero requiere dependencias adicionales de terceros, y para eso sinceramente es mejor que lo hagas en otro lenguaje (ej: C++, C#, VBNET), es algo muy facil.

Saludos!








Anonymous250

#2
Muchas gracias por responder,Eleкtro ,tan amable como siempre.  ;-) ,decir que ya me ayudastes en su momento aunque no te acuerdes,con un bat para abrir un programa de television  :laugh:

Sobre hacerlo en C++, C#, VBNET , hombre no tengo muchos conocimientos,pero si dices que es algo facil,quizas me animaria a intentarlo,ya que me gusto mucho practicar un poco con el vbscript.Aclarar que no soy ningun genio,pero si que se respira con otro aire,cuando creas tu un script tu mismo y ves que funciona,aunque sea bien sencillo  ;D,consegui hacer  con vbscript que el windows media center,me abra automaticamente la television,sin tener que darle a ninguna tecla,por medio de sendkeys,solo me falto encadenar en el mismo script,abrir los dos programas de television 1 primero  y el otro despues, ya que dispongo de 2 tarjetas y 2 señales,analogica y digital.

El codigo que intente en vbscript por medio de sendkeys,no dio resultado creo yo por estas dos cuestiones

1Wscript.Sleep
Que segun tengo entendido pone el script en espera ,el tiempo que tu le digas en segundos 1500,2500....y luego sigue ejecutando.

2O porque el vbscript no puede abrir el main.cpl ?

Explicacion de lo que intente hacer por medio de sendkeys ,sin resultado,quizas sea una chapuza:
Yo lo que hice,fue visualmente  contar cuando pinchas main.cpl, y se abre ,tienes que darle al tabulador para cambiar entre las opciones, un total de 5 veces hasta llegar a la pestaña "Botones",luego dos veces a la derecha hasta llegar a la pestaña "Opciones de puntero" ,para luego darle 10 veces al tabulador hasta llegar al menu deseado,osea "Seleccione la velocidad del puntero",Lenta rapida ,pudiendo desplazarlos a la derecha o izquierda y darle a aceptar.

Si,yo lo tengo al 6 , para bajarlo tendria que darle 5 veces a
izquierda y enter, y otro script o en el mismo con una pregunta tipo si no o con el nombre disminuir aumentar, seria lo mismo pero tendria que darle 5 veces a [Rigth] derecha ,y un enter.

Copio lo que intente,ya digo que quizas sea una chapuza  :-X :rolleyes: :xD
Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.Run "main.cpl",false
Wscript.Sleep 2500

objShell.SendKeys "{TAB}"
Wscript.Sleep 2500
objShell.SendKeys "{TAB}"
Wscript.Sleep 2500
objShell.SendKeys "{TAB}"
Wscript.Sleep 2500
objShell.SendKeys "{TAB}"
Wscript.Sleep 2500
objShell.SendKeys "{TAB}"
Wscript.Sleep 2500
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 2500

objShell.SendKeys "{RIGHT}"
Wscript.Sleep 2500
objShell.SendKeys "{TAB}"
Wscript.Sleep 2500
objShell.SendKeys "{TAB}"
Wscript.Sleep 2500
objShell.SendKeys "{TAB}"
Wscript.Sleep 2500
objShell.SendKeys "{TAB}"
Wscript.Sleep 2500
objShell.SendKeys "{TAB}"
Wscript.Sleep 2500
objShell.SendKeys "{TAB}"
Wscript.Sleep 2500
objShell.SendKeys "{TAB}"
Wscript.Sleep 2500
objShell.SendKeys "{TAB}"
Wscript.Sleep 2500
objShell.SendKeys "{TAB}"
Wscript.Sleep 2500
objShell.SendKeys "{TAB}"
Wscript.Sleep 2500
objShell.SendKeys "{LEFT}"
Wscript.Sleep 2500
objShell.SendKeys "{LEFT}"
Wscript.Sleep 2500
objShell.SendKeys "{LEFT}"
Wscript.Sleep 2500
objShell.SendKeys "{LEFT}"
Wscript.Sleep 2500
objShell.SendKeys "{LEFT}"
Wscript.Sleep 2500
objShell.SendKeys "{ENTER}"


WScript.Quit


Hice la prueba con y sin Wscript.Sleep 2500 ,pero supongo que ahi que ponerle por lo menos 1 segundo o menos,nolose.

Eleкtro

#3
Cita de: Anonymous250 en 23 Agosto 2014, 18:40 PMdecir que ya me ayudastes en su momento aunque no te acuerdes,con un bat para abrir un programa de television  :laugh:
Pues yo debo decirte que la verdad es que por el nick no me sonabas, pero ahora que dijiste eso ya lo recuerdo xD, creo que solo tu has expuesto ese tipo de problema (al menos en esta sección).

Cita de: Anonymous250 en 23 Agosto 2014, 18:40 PM1Wscript.Sleep
Que segun tengo entendido pone el script en espera ,el tiempo que tu le digas en segundos 1500,2500....y luego sigue ejecutando.
Son milisegundos, no segundos. (por si acaso)



Cita de: Anonymous250 en 23 Agosto 2014, 18:40 PMYo lo que hice,fue visualmente  contar cuando pinchas main.cpl, y se abre ,tienes que darle al tabulador para cambiar entre las opciones, un total de 5 veces hasta llegar a la pestaña "Botones",luego dos veces a la derecha hasta llegar a la pestaña "Opciones de puntero" ,para luego darle 10 veces al tabulador hasta llegar al menu deseado,osea "Seleccione la velocidad del puntero",Lenta rapida ,pudiendo desplazarlos a la derecha o izquierda y darle a aceptar.

Lo que has echo es viajar por la ruta más larga.

Puedes abrir directamente la pestaña de las opciones de puntero.

Código (vbnet) [Seleccionar]
Set Shell = CreateObject("WScript.Shell")
Shell.Run "rundll32.exe shell32.dll,Control_RunDLL main.cpl,,2", False, False

Do Until IsProcessRunning("rundll32.exe") ' Esperar a que el proceso 'rundll32.exe' se haya inicializado.
Wscript.Sleep 100
Loop

Wscript.Sleep 1500 ' Esperar 1,5 segundos a que se cargue el Form del main.cpl (quizás puedas disminuirlo a 100 ms para ahorrar tiempo)
Shell.SendKeys "{RIGHT}"
Wscript.Sleep 100 ' Esperar entre 50-200 ms entre pulsacion y pulsacion por precaución.
Shell.SendKeys "{ENTER}"

Wscript.Quit

' By elektro
Function IsProcessRunning(ProcessName)

IsProcessRunning = False

For Each Process In GetObject("winmgmts:").InstancesOf("Win32_Process")

If StrComp(Process.Name, ProcessName, 0) = 0 Then
IsProcessRunning = True
Exit for
End If

Next

End Function


PD: Lo he testeado en Windows 8, pero si no recuerdo mal el menu en 7 y vista era idéntico.

EDITO: Ah, por cierto, si quieres aumentar al máximo o disminuir al mínimo la velocidad solo tienes que pulsar la tecla INICIO o FIN, no le vayas a dar repetidas veces a LEFT o RIGHT.

CitarHice la prueba con y sin Wscript.Sleep 2500 ,pero supongo que ahi que ponerle por lo menos 1 segundo o menos,nolose.

Eso es algo que no se puede determinar con exactitud, depende del tiempo que tarde tu hardware+so para procesar la pulsación, y también para dibujar los controles y el form. suelen ser pocos ms (no llega a 100) pero si tienes el equipo muuuuuy saturado entonces podría llegar a ser segundos, todo depende.

Saludos!








Anonymous250

#4
 :D Muchas gracias Eleкtro. Funciona,mi codigo :xD

Resulta que ya habia probado mi codigo el largo y el corto y no habia funcionado nose porque algunas veces falla, disminuir,pues resulta que ahora me equivoco,y lo abro,se ejecuta digamos en tiempo bala lentisimo por el  Wscript.Sleep 1500 xD,viendose todo el proceso,y funciona! xD

Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.Run "control",false
Wscript.Sleep 1500
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{ENTER}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{ENTER}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 100
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{ENTER}"


WScript.Quit


Lo que e de probar ahora es reduciendo el Wscript.Sleep a 100.a ver si lo hace instantaneo.Lo malo es que no me cierra el panel de control una vez hecho.

sobre tu codigo, Muchisimas gracias,voy a probarlo si te digo la verdad,ahi muchas cosas que no entiendo,e de analizarlo bien y leer bien las explicaciones.

Sobre mi problema,pues es algo cotidiano,el ver una pelicula y que si tienes un raton bueno con sensibilidad que te muestre el menu todo el rato tipo xbmc o vlc,y de ahi me dije a ver si puedo solucionarlo y no tengo que estarlo haciendo yo manual  :D

Sobre mi equipo es windows 7, es  potente,puedo ejecutar casi todos los juegos de la actualidad.

El problema del pasado de la tarjeta de TV esta solucionado,ya que ahora tengo 2 hibridas que funcionan ambas en windows 7 32/64 bits  :D ,ando trasteando con vbscript para que con un solo click se me abran ambas aplicaciones,en 2 ventanas 1 la tdt y otra la television analogica con la que veo canal historia solamente  :xD

un saludo y muchas gracias probare tu codigo seguro que es muchisimo mejor,cualquier cosa te comento  :D

PD: E provado tu codigo,no funciono,lo modifique de la siguiente manera
Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.Run "rundll32.exe shell32.dll,Control_RunDLL main.cpl,,2", False, False
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{ENTER}"
Wscript.Quit


Ese vbs lo e llamado Disminuir,bueno primero le puse electro xD,el otro lo e llamado Aumentar y lo unico que cambia es que son 5 RIGHT ,ahora me gustaria unir los dos, con una pregunta ,nose si con un if o similar, Desea aumentar o disminuir los dpi? y dos casillas Disminuir o Aceptar.

Un saludo gracias y buenas noches. Funciona de maravilla lo unico que nose si ajustar mas el Wscript para que lo haga mas rapido aun de 100,por mi maquina no ahi problema :D

PD EDITO: Codigo final,a la espera de mejorarlo y crear una pregunta con disminuir y aumentar en vez de si no.
Dim pregunta
pregunta = msgbox("Desea disminuir la sensibilidad? y/n" , vbyesno)
If pregunta = vbyes then
Set objShell = CreateObject("WScript.Shell")
objShell.Run "rundll32.exe shell32.dll,Control_RunDLL main.cpl,,2", False, False
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{ENTER}"
else
Set objShell = CreateObject("WScript.Shell")
objShell.Run "rundll32.exe shell32.dll,Control_RunDLL main.cpl,,2", False, False
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 100
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 100
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 100
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 100
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 100
objShell.SendKeys "{ENTER}"
end if
Wscript.Quit

Eleкtro

¿Leiste esto que te dije?:
Cita de: Eleкtro en 23 Agosto 2014, 19:56 PMEDITO: Ah, por cierto, si quieres aumentar al máximo o disminuir al mínimo la velocidad solo tienes que pulsar la tecla INICIO o FIN, no le vayas a dar repetidas veces a LEFT o RIGHT.

Cita de: Anonymous250 en 23 Agosto 2014, 22:43 PM
PD: E provado tu codigo,no funciono
¿Que windows tienes?, ¿Que significa 'no funciona'?.

Cita de: Anonymous250 en 23 Agosto 2014, 22:43 PM
PD EDITO: Codigo final,a la espera de mejorarlo y crear una pregunta con disminuir y aumentar en vez de si no.
Creo que me he perdido, si ya sabes que pulsaciones debes enviar tanto para disminuir o aumentar el volumne, ¿que pregunta más queda?.

Saludos!








Anonymous250

#6
Cita de: Eleкtro en 25 Agosto 2014, 07:30 AM
¿Leiste esto que te dije?:¿Que windows tienes?, ¿Que significa 'no funciona'?.
Creo que me he perdido, si ya sabes que pulsaciones debes enviar tanto para disminuir o aumentar el volumne, ¿que pregunta más queda?.

Saludos!
1. Si lei lo que dijistes tranquilo jaja,el caso es que no e mirado como se escribe,  en vscript Inicio y Fin .Tengo que mirarlo ahora mismo ,lo siento  :rolleyes:
2.Tengo windows 7
3.Pues que ejecute tu vscript y tuve que toquetearlo un poco para que se ejecutara ,no quiero ofenderte ni nada no me malintepretes jaja  :(,muchas gracias.
4.Si,ya tengo el script terminado,lo unico que me falta es mirar en la lista de vscript cual es en Sendkey Inicio/fin y asi quitarle todos los Right y Left y simplificar el codigo.Y lo otro que te digo  es que si puedo poner una pregunta tipo if como la tengo pero en vez de Si o no ,que ponga Disminuir Aumentar.Seria lo ideal,hombre ya se que seguro que se puede mejorar,pero a mi con que funcione,contento  :D.

Como lo tengo ahora ,el script
Dim pregunta
pregunta = msgbox("Desea disminuir la sensibilidad? y/n" , vbyesno)
If pregunta = vbyes then
Set objShell = CreateObject("WScript.Shell")
objShell.Run "rundll32.exe shell32.dll,Control_RunDLL main.cpl,,2", False, False
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{LEFT}"
Wscript.Sleep 100
objShell.SendKeys "{ENTER}"
else
Set objShell = CreateObject("WScript.Shell")
objShell.Run "rundll32.exe shell32.dll,Control_RunDLL main.cpl,,2", False, False
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 100
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 100
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 100
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 100
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 100
objShell.SendKeys "{ENTER}"
end if
Wscript.Quit


Y por ultimo tengo una gran duda, y es que por ejemplo al iniciar el equipo, le doy al vscript y solo me abre el programa no me hace los Sendkeys, sin embargo despues de un rato iniciado el script se ejecuta perfectamente.Me da la sensacion de que a veces falla por lo de Sendkeys,puede que solo sea al inicio  :rolleyes:

A que se debe esto?, el vscript nesecita ejecutar un proceso y hasta que no se ejecute no hace Sendkeys o es debido a alguna otra cosa?

Muchas gracias y disculpa las molestias que te tomas por responderme  :-* :laugh:

Eleкtro

#7
Cita de: Anonymous250 en 26 Agosto 2014, 02:29 AM
1. Si lei lo que dijistes tranquilo jaja,el caso es que no e mirado como se escribe,  en vscript Inicio y Fin .Tengo que mirarlo ahora mismo ,lo siento  :rolleyes:

.SendKeys "{HOME}"
.SendKeys "{END}"

SendKeys Class




Cita de: Anonymous250 en 26 Agosto 2014, 02:29 AM3.Pues que ejecute tu vscript y tuve que toquetearlo un poco para que se ejecutara ,no quiero ofenderte ni nada no me malintepretes jaja  :(,muchas gracias.

No me ofendes, solo intento averiguar porque a mi me funciona pero a ti no, ya que ese Script te ahorraría mucho código, pero no me has aclarado mucho sobre el porque "no funciona", ¿Así que ni siquiera se te ejecuta el script?.




Cita de: Anonymous250 en 26 Agosto 2014, 02:29 AMpuedo poner una pregunta tipo if como la tengo pero en vez de Si o no ,que ponga Disminuir Aumentar.Seria lo ideal,hombre ya se que seguro que se puede mejorar,pero a mi con que funcione,contento  :D.

No se si te lo dije ya pero VBS (al igual que Batch) es un lenguaje incapacitado para ciertas tareas, para mostrar un diálogo con una pregunta y con dos botones que pongan "Disminuir" y "Aumentar" no es algo posible a menos que dependas de la utilización del objeto com de InternetExplorer,
de todas formas en otros lenguajes ya es algo complicado hackear la class del msgbox y se recurre a la creación de un Form con dos botones, que eso es mucho más sencillo, pero que en VBS tampoco lo puedes hacer, claro está (sin depender de otras herramientas de terceros).

En VBS no hay un 'Choice' por así decirlo, osea, no vas a poder hacer parecido a esto:



Así que tienes dos opciones: mostrar un msgbox con un "SI" y "NO", o mostrar un InputUser donde debas escribir "Disminuir" o "Aumentar".
Lo primero es más cómodo, ¿verdad?:

Código (vb) [Seleccionar]
' Determino si se debe incrementar la velocidad, con una simple operación: CBool((6 o 7) - 7)
IncreaseSpeed = CBool(MsgBox("'SI' para aumentar, 'NO' para disminuir.", vbYesNo, "Velocidad del ratón...") - vbNo)

Sub MousePanelSendkeys()
' Aquí las instrucciones que tienes para abrir el panel del mouse y tal...
' Y cuando llegues a la instrucción de enviar la tecla 'FIN' o 'INICIO':

If IncreaseSpeed Then
.SendKeys "{END}" ' Incrementar velocidad.
Else
.SendKeys "{HOME}" ' Disminuir velocidad.
End If

   ' Aquí el resto de instrucciones para cerrar el panel y tal...

End Sub


Saludos








Anonymous250

Cita de: Eleкtro en 26 Agosto 2014, 11:14 AM
.SendKeys "{HOME}"
.SendKeys "{END}"
Vale perfecto,la verdad es que soy un poco tonto no haberlo buscado antes,es bastante facil,es casi su traduccion al ingles  ;D ,gracias.Si que lo habia mirado en el tutorial  de vbscript del foro.
Solo me funciona el HOME,para mi codigo,ya que,yo no quiero hacer un end,por que digamos lo que quiero es dejarlo como lo tenia,en este caso, con 5 o 6 Rights a la mitad,al aumentarlo.

Citar
No me ofendes, solo intento averiguar porque a mi me funciona pero a ti no, ya que ese Script te ahorraría mucho código, pero no me has aclarado mucho sobre el porque "no funciona", ¿Así que ni siquiera se te ejecuta el script?.
Puede que sea por lo que te comentaba puede que tu codigo si funcione!  :huh: ,lo volvere a probar,al parecer vbscript el sendkeys depende de algun proceso o algo asi, y hasta que no se inicia,no manda los sendkeys :huh:,por ejemplo digamos que yo tengo el ordenador recien encendido,pues en ese momento si le doy al vsbcript me abre solo el panel del mouse y no me ejecuta los sendkeys,sin embargo,al cabo de 10-15 minutos,me ejecuta todo el codigo bien includo sendkeys.

CitarNo se si te lo dije ya pero VBS (al igual que Batch) es un lenguaje incapacitado para ciertas tareas, para mostrar un diálogo con una pregunta y con dos botones que pongan "Disminuir" y "Aumentar" no es algo posible a menos que dependas de la utilización del objeto com de InternetExplorer,
de todas formas en otros lenguajes ya es algo complicado hackear la class del msgbox y se recurre a la creación de un Form con dos botones, que eso es mucho más sencillo, pero que en VBS tampoco lo puedes hacer, claro está (sin depender de otras herramientas de terceros).

En VBS no hay un 'Choice' por así decirlo, osea, no vas a poder hacer parecido a esto:



Así que tienes dos opciones: mostrar un msgbox con un "SI" y "NO", o mostrar un InputUser donde debas escribir "Disminuir" o "Aumentar".
Lo primero es más cómodo, ¿verdad?:

Código (vb) [Seleccionar]
' Determino si se debe incrementar la velocidad, con una simple operación: CBool((6 o 7) - 7)
IncreaseSpeed = CBool(MsgBox("'SI' para aumentar, 'NO' para disminuir.", vbYesNo, "Velocidad del ratón...") - vbNo)

Sub MousePanelSendkeys()
' Aquí las instrucciones que tienes para abrir el panel del mouse y tal...
' Y cuando llegues a la instrucción de enviar la tecla 'FIN' o 'INICIO':

If IncreaseSpeed Then
.SendKeys "{END}" ' Incrementar velocidad.
Else
.SendKeys "{HOME}" ' Disminuir velocidad.
End If

   ' Aquí el resto de instrucciones para cerrar el panel y tal...

End Sub


Saludos
Comprendo en batch  si era posible,el choice.Creo que yo me doy por satisfecho,con el resultado final del vbscript ,no es gran cosa y se podria mejorar,pero funciona y es lo que quiero que antes lo estaba haciendo manual y perdia mucho tiempo y el raton me quedaba super lento,mas adelante puede que lo mejore y aprenda mas acerca de otros lenguajes o maneras de hacerlo posible.

Respecto al codigo final que me pusistes lo entiendo,pero es lo que te comento en vez de End,tendria que ponerle 5 o 6 RIGHT para que me quede como lo tengo a la mitad,no quiero incrementarlo al maximo,pero muchas gracias.

Te agradezco tu gran ayuda Eleкtro ,si fuera rico,cosa que no soy de hecho no tengo ni cuenta bancaria, pero si lo fuera te donaria algo por todo lo que me ayudas no lo dudes  ;-) ,de veras,muchas gracias.Yo soy el tipico usuario que sino sabe algo pide ayuda,pero tu eres el que sabe mucho y se presta ayudar,de verdad muchas gracias.
Dim pregunta
pregunta = msgbox("Desea disminuir la sensibilidad? y/n" , vbyesno)
If pregunta = vbyes then
Set objShell = CreateObject("WScript.Shell")
objShell.Run "rundll32.exe shell32.dll,Control_RunDLL main.cpl,,2", False, False
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{HOME}"
Wscript.Sleep 100
objShell.SendKeys "{ENTER}"
else
Set objShell = CreateObject("WScript.Shell")
objShell.Run "rundll32.exe shell32.dll,Control_RunDLL main.cpl,,2", False, False
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{TAB}"
Wscript.Sleep 100
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 100
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 100
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 100
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 100
objShell.SendKeys "{RIGHT}"
Wscript.Sleep 100
objShell.SendKeys "{ENTER}"
end if
Wscript.Quit

Asi me a quedado el codigo al final simplemente igual que el anterior pero con el Home en vez de 5 LEFT .Mejorable,seguro  :xD,funcional,si  :D,muchas gracias,doy el tema por solucionado ya que por lo menos ya tengo algo similar a lo que queria,a noser que me quieras solucionar la duda del Sendkeys al inicio que no los hace,gracias.
Para muchos este vbscript sera una tonteria de hacer, ;D,pero a mi me resulta muy util  :D
Un saludo.