¿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.

Volar a la derecha
fuente

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}')}"
Knuckle-Dragger
fuente
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
JdeBP
fuente
He descargado TCC / LE y esto resuelve el problema perfectamente. ¡Gracias!
Volar a la derecha el
0

Puede usar un programa muy pequeño en esta página http://www.rjlsoftware.com/software/utility/capslock/ es gratis y funciona bien para mí. Simplemente use "capslock on" o "capslock off" en cmd.

Cristian CTS
fuente
Lea Cómo recomiendo el software para obtener algunos consejos sobre cómo debe recomendar el software. Como mínimo, debe proporcionar algo más que un enlace, por ejemplo, información adicional sobre el software en sí.
DavidPostill