¿Cómo hacer que un archivo por lotes sea un conmutador de tareas?

1

¿Cómo hacer que un archivo por lotes sea un conmutador de tareas?

Con los 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 se queda en el Administrador de tareas.
El problema es que el foco no está en la ventana del lote.

¿Cómo volver a enfocar la ventana del archivo por lotes?
¿Cómo cambiar las tareas a lotes?

¿Cómo enfocarse en la ventana de lote usando comandos de archivo de lote y sin usar el mouse para hacer clic en la ventana de archivo de lote y sin presionar Alt-Tab en el teclado?

José
fuente

Respuestas:

3

Inicie el programa minimizado

Para evitar que un programa iniciado desde un archivo por lotes (o el símbolo del sistema) tome el foco, comience 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, siempre toma el enfoque del sistema.

En este caso, no hay nada que puedas hacer. Simplemente no es posible recuperar el enfoque del sistema de un archivo por lotes. (¡Recuerde, las secuencias de comandos por lotes provienen de los días en que no había ventanas de aplicaciones en absoluto!)

Imitador Twisty
fuente
Solo la mitad funciona porque el Administrador de tareas es Mín, pero el foco no está en la ventana de lote. inicio / min / normal c: \ windows \ system32 \ taskmgr.exe
Joseph
Tienes razón ... eso es interesante. Parece que no importa cómo inicie el Administrador de tareas, se hace cargo del enfoque. Actualizaré mi respuesta.
Twisty Impersonator
Genial, ambos podemos duplicar el problema. Para mayor claridad, el foco debe estar siempre en la ventana del lote para hacer Ctrl-C para detener el lote.
Joseph
@Joseph Como se explicó en mi respuesta, no puede devolver el foco a la ventana de proceso por lotes una vez que se mueve a otro lugar (a menos que esté abierto a usar programas sin procesamiento por lotes).
Imitador Twisty
1

Simplemente puede crear una variable de marca de tiempo única en el script por lotes y usar esa variable para establecer como el valor de su título por cada ejecución del script.

Luego puede usar appactivate pasándole el valor del título de la ventana cmd para activar, crear un VBScript dinámico con el valor y luego ejecutar ese script con cscript para activarlo.

Solo utilicé ping -n 06 127.0.0.1 > nuluna pausa de 5 segundos para esperar después del momento en que se inicia el Administrador de tareas antes de que la ejecución de cscript active la ventana titulada del script por lotes real .

Script 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

Pimp Juice IT
fuente
1
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
  • Administrador de tareas abierto
  • Espere a que se inicie el Administrador de tareas (1s)
  • Cree, ejecute y elimine un script VBS en Alt + Tab de nuevo a cmd-window
  • Eco 2
  • Pausa
Klinghust
fuente
@Facebook necesita 10k representante para ver las publicaciones eliminadas.
Personificador Twisty
0

En un archivo por lotes, esto ha hecho el truco, probado algunas veces bien.
Reinicié la computadora y aún probé bien.

C: \ WINDOWS \ nircmd.exe sendkeypress rwin + inicio

NirCmd v2.81 (versión de consola)
http://www.nirsoft.net

El comando por lotes anterior cambia el enfoque
del sistema desde el "Administrador de tareas de Windows"
y coloca el enfoque del sistema
en la ventana del archivo por lotes.

Antecedentes: ejecutó un
lote que
llama a taskmgr.exe y el
lote realiza el comando anterior y
ahora al presionar Ctrl-C se detiene el lote.

No es necesario hacer clic en la ventana del lote.
No es necesario presionar Alt-Tab 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
versus una solución lista para usar .

Referencia
Hacer que un archivo por lotes minimice todas las ventanas pero sí mismo O active algo que pueda

-

José
fuente