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

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

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

Com arquivos em lote do Windows XP e Windows 7...
O arquivo em 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 voltar o foco para a janela do arquivo em lote?
Como mudar tarefas para lote?

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

Responder1

Inicie o programa minimizado

Para evitar que um programa iniciado a partir de um arquivo em lote (ou prompt de comando) receba o foco, inicie-o minimizado:

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

Isso abre o programa, mas como a janela está minimizada, ela não consegue tirar o foco.


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

Neste caso, não há nada que você possa fazer. Simplesmente não é possível recuperar o foco do sistema a partir de um arquivo em lote. (Lembre-se de que os scripts em lote vêm da época em que não havia nenhuma janela de aplicativo!)

Responder2

Você pode simplesmente criar umvariável de carimbo de data/hora exclusivano script em lote e use essa variável para definir como o valor de seutítulopor cada execução do script.

Você pode então usarativação do aplicativopassando o valor da janela cmdtítulopara ativar, crie um VBScript dinâmico com o valor e, em seguida, execute esse script comscriptpara ativá-lo.

Eu apenas usei ping -n 06 127.0.0.1 > nuluma pausa de 5 segundos para esperar depois do tempoGerenciador de tarefasé iniciado antes que a janela intitulada do script em lote real seja ativada porscriptexecuçã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 

Recursos adicionais

Responder3

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

Isso vai:

  • Eco 1
  • Abra o Gerenciador de Tarefas
  • Aguarde o início do Gerenciador de Tarefas (1s)
  • Crie, execute e exclua um script VBS para Alt + Tab de volta ao cmd-window
  • Eco 2
  • Pausa

Responder4

Em um arquivo em lote, isso funcionou, 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)
http://www.nirsoft.net

O comando em lote acima altera o foco do sistema
do "Gerenciador de Tarefas do Windows"
e coloca o foco do sistema
na janela do arquivo em lote.

Plano de fundo:
executou o lote que
chama taskmgr.exe e
o lote executa o comando acima e
agora pressionar Ctrl-C interrompe o lote.

Não há necessidade de 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
em vez de uma solução pronta para uso.

Referência
Faça com que um arquivo em lote minimize todas as janelas, exceto ele mesmo, OU ative algo que possa

--

informação relacionada