Autor
|
Tema: [Solucionado]Mini-vbscript aumentar/disminuir velocidad del raton DPI automatico (Leído 7,779 veces)
|
Anonymous250
Desconectado
Mensajes: 467
|
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.htmlLa 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.cplAbrimos 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.
|
|
« Última modificación: 15 Septiembre 2014, 05:00 am por Anonymous250 »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
lo 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.aspxNota: 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!
|
|
« Última modificación: 22 Agosto 2014, 16:44 pm por Eleкtro »
|
En línea
|
|
|
|
Anonymous250
Desconectado
Mensajes: 467
|
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 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 ,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 1 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 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.
|
|
« Última modificación: 23 Agosto 2014, 18:43 pm por Anonymous250 »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
decir que ya me ayudastes en su momento aunque no te acuerdes,con un bat para abrir un programa de television 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). 1 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) 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. Lo que has echo es viajar por la ruta más larga. Puedes abrir directamente la pestaña de las opciones de puntero. 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. Hice 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!
|
|
« Última modificación: 23 Agosto 2014, 20:03 pm por Eleкtro »
|
En línea
|
|
|
|
Anonymous250
Desconectado
Mensajes: 467
|
Muchas gracias Eleкtro. Funciona,mi codigo 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 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 ,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 un saludo y muchas gracias probare tu codigo seguro que es muchisimo mejor,cualquier cosa te comento PD: E provado tu codigo,no funciono,lo modifique de la siguiente maneraDim 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 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
|
|
« Última modificación: 24 Agosto 2014, 18:21 pm por Anonymous250 »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
¿Leiste esto que te dije?: 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. PD: E provado tu codigo,no funciono ¿Que windows tienes?, ¿Que significa 'no funciona'?. 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!
|
|
|
En línea
|
|
|
|
Anonymous250
Desconectado
Mensajes: 467
|
¿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 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 . Como lo tengo ahora ,el scriptDim 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 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
|
|
« Última modificación: 26 Agosto 2014, 02:32 am por Anonymous250 »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
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 ↠ SendKeys Class
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. 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?.
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 . 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?: ' 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
|
|
« Última modificación: 26 Agosto 2014, 11:45 am por Eleкtro »
|
En línea
|
|
|
|
Anonymous250
Desconectado
Mensajes: 467
|
Vale perfecto,la verdad es que soy un poco tonto no haberlo buscado antes,es bastante facil,es casi su traduccion al ingles ,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. 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! ,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 ,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. 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?: ' 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 ,funcional,si ,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, ,pero a mi me resulta muy util Un saludo.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Disminuir la velocidad de un audio.
Multimedia
|
mundo
|
0
|
1,905
|
8 Mayo 2004, 12:22 pm
por mundo
|
|
|
Disminuir velocidad de canciones mp3
Multimedia
|
[@]
|
3
|
7,578
|
9 Diciembre 2004, 05:44 am
por [@]
|
|
|
[BATCH](SOLUCIONADO)Disminuir nombres repetidos a 1 solo
« 1 2 »
Scripting
|
FranciskoAsdf
|
13
|
11,584
|
29 Diciembre 2011, 18:07 pm
por Turrete
|
|
|
Duda aumentar HZ ratón
Dudas Generales
|
Senior++
|
7
|
7,136
|
14 Agosto 2019, 21:52 pm
por RiKKu
|
|
|
[Solucionado]Error con VBscript que habla
« 1 2 »
Scripting
|
Flamer
|
19
|
9,082
|
2 Noviembre 2015, 04:47 am
por Eleкtro
|
|