¿Puedo activar / desactivar Caps desde un archivo por lotes en Win 7?


3

Tengo un programa muy antiguo que necesita que los comandos sean mayúsculas. Cuando salgo de este programa, a menudo me olvido de desactivar el bloqueo de mayúsculas (muy molesto). Tuve un programa por lotes en XP que hizo esto pero no puedo encontrar una manera de hacerlo en Win 7.

Respuestas:


5

La única manera que sé de cmd.exe es generando powershell o vbs.

Suelta esto al final de tu lote, alterna CAPSLOCK

start /b /wait powershell.exe -nologo -WindowStyle Hidden -sta -command "$wsh = New-Object -ComObject WScript.Shell;$wsh.SendKeys('{CAPSLOCK}')"

Eso llama a powershell a través de la línea de comandos e invoca las teclas de envío, el método alternativo es hacer eco de comandos similares en un archivo% temp% y luego wscript %temp%\my.vbs.

EDITAR: Aquí está la declaración IF para garantizar que solo apague el bloqueo de mayúsculas

start /b /wait powershell.exe -nologo -WindowStyle Hidden -sta -command "IF ([console]::CapsLock -eq 'True'){$wsh = New-Object -ComObject WScript.Shell;$wsh.SendKeys('{CAPSLOCK}')}"

nota: [console]::CapsLockmuestra el estado actual $ true o $ false combinado con una instrucción IF, puede asegurarse de que no se ejecute si el bloqueo de mayúsculas ya está desactivado.
Knuckle-Dragger

Gracias knuckle-dragger. ¿Cómo incorporaría la línea [consola] en la instrucción if en el archivo por lotes (sé algo básico pero no mucho más)? Además, ¿cómo obtengo el archivo por lotes para procesar comandos después de la ejecución de la línea powershell?
Volar a la derecha el

Se agregó un ejemplo de declaración IF. Después de alternar el caplsock start /wait, volverá a enfocarse en el script por lotes y ejecutará cualquier comando adicional que encuentre.
Knuckle-Dragger

Este es un GRAN Knuckle-dragger. He estado tratando de hacer esto por años. El único problema que tengo es que el archivo por lotes se descarga después de la primera línea a pesar de que tengo el / wait en los comandos de inicio que ha indicado. ¿Qué necesito cambiar en lo siguiente para que ejecute la segunda línea?
Vuela a la derecha el

start / b / wait powershell.exe -nologo -WindowStyle Hidden -sta -command "IF ([consola] :: CapsLock -ne 'True') {$ wsh = New-Object -ComObject WScript.Shell; $ wsh.SendKeys ( '{CAPSLOCK}')} "<< nueva línea >> uso neto lpt1: \\ abajo \ LaserJet / persistente: sí << nueva línea >> menú principal básico << nueva línea >> uso neto lpt1: / eliminar << nuevo línea >> inicio / b / espera powershell.exe -nologo -WindowStyle Hidden -sta -command "IF ([consola] :: CapsLock -eq 'True') {$ wsh = New-Object -ComObject WScript.Shell; $ wsh .SendKeys ('{CAPSLOCK}')} "
Vuela a la derecha el

1

Usar el TCC / LE de JP Software , que puede ejecutar scripts por lotes, por supuesto, es tan simple como el KEYBDcomando incorporado . Entonces, su script de envoltura que ejecuta con TCC / LE sería:

@echo off
:: Force CAPS LOCK on beforehand.
keybd /c1
call very-old-program
:: Force CAPS LOCK off afterwards.
keybd /c0

He descargado TCC / LE y esto resuelve el problema perfectamente. ¡Gracias!
Volar a la derecha el

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.