¿Cómo hacer que un archivo por lotes sea un conmutador de tareas?
Con archivos por lotes de Windows XP y Windows 7...
El archivo por lotes es:
cls
@echo off
echo 1
start /normal c:\windows\system32\taskmgr.exe
echo 2
pause
El problema es que el foco permanece en el Administrador de tareas.
El problema es que la atención no se centra en la ventana del lote.
¿Cómo volver a centrar la atención en la ventana del archivo por lotes?
¿Cómo cambiar tareas a lotes?
¿Cómo enfocarse en la ventana del archivo por lotes usando comandos de archivos por lotes y sin usar el mouse para hacer clic en la ventana del archivo por lotes y sin presionar Alt-Tab en el teclado?
Respuesta1
Iniciar el programa minimizado
Para evitar que un programa iniciado desde un archivo por lotes (o el símbolo del sistema) reciba el foco, inícielo minimizado:
start /min /normal c:\windows\system32\taskmgr.exe
Esto abre el programa, pero debido a que la ventana está minimizada, no puede enfocarse.
EDITAR:Iniciar el Administrador de tareas es un caso especial. Independientemente de cómo inicie este programa,siempretoma el foco del sistema.
En este caso, no hay nada que puedas hacer. Simplemente no es posible recuperar el foco del sistema desde un archivo por lotes. (Recuerde, las secuencias de comandos por lotes provienen de los días en que no había ninguna ventana de aplicación).
Respuesta2
Puedes simplemente crear unvariable de marca de tiempo únicaen el script por lotes y use esa variable para establecerla como el valor de sutítulopor cada ejecución del script.
Luego puedes usaractivar aplicaciónpasándole el valor de la ventana cmdtítulopara activar, cree un VBScript dinámico con el valor y luego ejecute ese script concscriptpara activarlo.
Solo usé ping -n 06 127.0.0.1 > nul
una pausa de 5 segundos para esperar después del tiempo.Administrador de tareasse inicia antes de que la ventana titulada script por lotes real sea activada porcscriptejecución.
Guión por lotes
cls
SET t=%~n0_%date:~10%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%
SET t=%t: =0%
TITLE %t%
@echo off
echo 1
start /normal c:\windows\system32\taskmgr.exe
echo 2
:VBSDynamicBuild
SET TempVBSFile=%temp%\~tmpSendKeysTemp.vbs
IF EXIST "%TempVBSFile%" DEL /F /Q "%TempVBSFile%"
ECHO Set objShell = CreateObject("WScript.Shell") >>"%TempVBSFile%"
ECHO objShell.AppActivate "%t%" >>"%TempVBSFile%"
ping -n 06 127.0.0.1 > nul
CSCRIPT //nologo "%TempVBSFile%"
pause
Recursos adicionales
Respuesta3
cls
@echo off
echo 1
start /normal c:\windows\system32\taskmgr.exe
REM Wait for Task Manager to open
CALL :Wait 1
REM Alt+Tab back to cmd window
CALL :AltTab
echo 2
pause
GOTO :eof
REM Subroutines:
:wait
@CHOICE /D Y /T:%1% > NUL
EXIT /B
:AltTab
(
ECHO.CreateObject^("WScript.Shell"^).SendKeys "%%{TAB}"
)>%tmp%\tmp.vbs
CALL %tmp%\tmp.vbs
DEL %tmp%\tmp.vbs
EXIT /B
Esta voluntad:
- Eco 1
- Abrir Administrador de tareas
- Espere a que se inicie el Administrador de tareas (1s)
- Cree, ejecute y elimine un script VBS con Alt+Tab y vuelva a la ventana cmd
- eco 2
- Pausa
Respuesta4
En un archivo por lotes, esto funcionó, se probó correctamente varias veces.
Reinicié la computadora y aún así la prueba estuvo bien.
C:\WINDOWS\nircmd.exe enviar tecla presionar rwin+inicio
NirCmd v2.81 (versión de consola)
http://www.nirsoft.net
El comando por lotes anterior cambia el foco del sistema
desde el "Administrador de tareas de Windows"
y coloca el foco del sistema
en la ventana del archivo por lotes.
Antecedentes:
se ejecutó un lote que
llama a taskmgr.exe y
el lote ejecuta el comando anterior y
ahora al presionar Ctrl-C se detiene el lote.
No es necesario hacer clic con el mouse en la ventana por lotes.
No es necesario presionar Alt-Tab para acceder a la ventana del lote.
El comando de archivo por lotes de una línea anterior cambia el enfoque del sistema.
Desventaja nircmd.exe es un software de terceros
en comparación con una solución lista para usar.
Referencia
Haga que un archivo por lotes minimice todas las ventanas excepto él mismo O active algo que pueda
--