1 votes

Comment faire d'un fichier batch un commutateur de tâches ?

Comment faire d'un fichier batch un commutateur de tâches ?

Avec les fichiers batch Windows XP et Windows 7...
Le fichier batch est :

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

Le problème est que le focus reste sur le Gestionnaire des tâches.
Le problème est que le focus n'est pas sur la fenêtre du fichier batch.

Comment ramener le focus sur la fenêtre du fichier batch ?
Comment basculer entre les tâches vers le batch ?

Comment ramener le focus sur la fenêtre du fichier batch en utilisant des commandes de fichier batch et sans utiliser la souris pour cliquer sur la fenêtre du fichier batch et sans appuyer sur Alt-Tab sur le clavier ?

3voto

Démarrer le programme minimisé

Pour éviter qu'un programme lancé à partir d'un fichier batch (ou de l'invite de commandes) ne prenne le focus, démarrez-le minimisé:

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

Cela ouvre le programme, mais comme la fenêtre est réduite, elle ne peut pas prendre le focus.


MODIFIER : Le démarrage du Gestionnaire des tâches est un cas spécial. Peu importe comment vous démarrez ce programme, il prend toujours le focus du système.

Dans ce cas, il n'y a rien que vous puissiez faire. Il n'est tout simplement pas possible de récupérer le focus du système à partir d'un fichier batch. (Rappelez-vous, les scripts batch viennent de l'époque où il n'y avait pas du tout de fenêtres d'application!)

1voto

Vous pouvez simplement créer une variable de jeton temporel unique dans le script batch et utiliser cette variable pour définir sa valeur en tant que titre à chaque exécution du script.

Ensuite, vous pouvez utiliser appactivate en lui passant la valeur du titre de la fenêtre cmd à activer, créer un VBScript dynamique avec la valeur, puis exécuter ce script avec cscript pour l'activer.

J'ai simplement utilisé ping -n 06 127.0.0.1 > nul comme une pause de 5 secondes pour attendre après le lancement de Task Manager avant que la fenêtre de script batch réellement titrée ne soit activée par l'exécution de cscript.

Script Batch

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 

Ressources Supplémentaires

1voto

Aich_katie Points 11
cls
@echo off

echo 1
start /normal c:\windows\system32\taskmgr.exe

REM Attendre l'ouverture du Gestionnaire des tâches
    CALL :Wait 1

REM Alt+Tab retour à la fenêtre cmd
    CALL :AltTab

echo 2
pause

GOTO :eof

REM Sous-routines:
: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

Cela va:

  • Afficher 1
  • Ouvrir le Gestionnaire des tâches
  • Attendre le démarrage du Gestionnaire des tâches (1s)
  • Créer, exécuter et supprimer un script VBS pour revenir à la fenêtre cmd en appuyant sur Alt+Tab
  • Afficher 2
  • Pause

0voto

Joseph Points 111

Dans un fichier batch, cela a fonctionné, testé quelques fois ok.
Redémarré l'ordinateur et toujours testé ok.

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

NirCmd v2.81 (Version Console)
http://www.nirsoft.net

La commande batch ci-dessus change le focus système
de "Gestionnaire des tâches Windows"
et met le focus système
sur la fenêtre du fichier batch.

Contexte:
Exécuté un fichier batch qui
appelle taskmgr.exe et
le fichier batch exécute la commande ci-dessus et
maintenant en appuyant sur Ctrl-C arrête le batch.

Pas besoin de cliquer avec la souris sur la fenêtre du batch.
Pas besoin de passer en Alt-Tab sur la fenêtre du batch.

La commande de fichier batch d'une ligne ci-dessus change le focus du système.

L'inconvénient de nircmd.exe est que c'est un logiciel tiers
par rapport à une solution prête à l'emploi.

Référence
Avoir un fichier batch pour minimiser toutes les fenêtres sauf lui-même OU activer quelque chose qui le peut

--

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X