Como tornar um arquivo de lote um alternador de tarefas?

1

Como transformar um arquivo de lote em um alternador de tarefas?

Com arquivos em lote do Windows XP e do Windows 7 ...
O arquivo de lote é:

cls  
@echo off  
echo 1  
start /normal c:\windows\system32\taskmgr.exe  
echo 2  
pause 

O problema é que o foco permanece no Gerenciador de Tarefas.
O problema é que o foco não está na janela do lote.

Como colocar o foco de volta na janela do arquivo de lote?
Como alternar tarefas para lote?

Como obter o foco na janela de lote usando comandos de arquivo em lote e sem usar o mouse para clicar na janela do arquivo de lote e sem pressionar Alt-Tab no teclado?

    
por Joseph 11.10.2017 / 17:03

4 respostas

2

Iniciar o programa minimizado

Para evitar que um programa iniciado a partir de um arquivo de lote (ou o prompt de comando) tire o foco, inicie-o no mínimo:

start /min /normal c:\windows\system32\taskmgr.exe

Isso abre o programa, mas como a janela é minimizada, não é possível tirar o foco.

EDITAR: Iniciar o Gerenciador de Tarefas é um caso especial. Independentemente de como você inicia este programa, sempre leva o foco do sistema.

Neste caso, não há nada que você possa fazer. Simplesmente não é possível recuperar o foco do sistema de um arquivo em lotes. (Lembre-se, o script em lote vem dos dias em que não havia janelas de aplicativos!)

    
por 11.10.2017 / 17:11
1

Você pode simplesmente criar uma variável de registro de data / hora única no script em lote e usar essa variável para definir como o valor de seu title por cada execução do script.

Você pode usar appactivate passando o valor da janela cmd title para ativar, criar um VBScript dinâmico com o valor e, em seguida, executar esse script com cscript para ativá-lo.

Acabei de usar ping -n 06 127.0.0.1 > nul como uma pausa de 5 segundos para aguardar depois que o Gerenciador de Tarefas é iniciado antes que o script em lote real chamado janela seja ativado por cript execução.

Script em lote

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 

Mais recursos

por 13.10.2017 / 08:20
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

Isto irá:

  • Eco 1
  • Abra o Gerenciador de tarefas
  • Aguarde o Gerenciador de Tarefas iniciar (1s)
  • Crie, execute e exclua um script VBS para Alt + Tab de volta para a janela cmd
  • Eco 2
  • Pausa
por 15.10.2017 / 00:47
0

Em um arquivo de lote, isso fez o truque, testado algumas vezes ok.
Reiniciei o computador e ainda testei ok.

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

NirCmd v2.81 (versão do console) link

Acima do comando em lote altera o foco do sistema
de "Gerenciador de tarefas do Windows"
e coloca o foco do sistema
para a janela de arquivos em lote.

Antecedentes:
Ran batch que você chama taskmgr.exe e
lote faz comando acima e
agora pressionando Ctrl-C pára o lote.

Não é necessário clicar com o mouse na janela do lote.
Não há necessidade de Alt-Tab para a janela do lote.

O comando de arquivo em lote acima, de uma linha, altera o foco do sistema.

Desvantagem nircmd.exe é um software de terceiros | versus solução pronta para uso.

Referência
Ter um arquivo em lotes minimizar todas as janelas, mas em si ou ativar algo que possa

-

    
por 12.10.2017 / 04:43