Wie macht man aus einer Batchdatei einen Task-Umschalter?
Bei Batchdateien von Windows XP und Windows 7 …
Die Batchdatei lautet:
cls
@echo off
echo 1
start /normal c:\windows\system32\taskmgr.exe
echo 2
pause
Das Problem ist, dass der Fokus auf dem Task-Manager bleibt.
Das Problem ist, dass der Fokus nicht auf dem Batch-Fenster liegt.
Wie bekomme ich den Fokus wieder auf das Batchdateifenster?
Wie stelle ich Aufgaben auf Batch um?
Wie erhält man mithilfe von Batchdateibefehlen den Fokus auf das Batchdateifenster, ohne mit der Maus auf das Batchdateifenster zu klicken und ohne Alt-Tab auf der Tastatur zu drücken?
Antwort1
Starten Sie das Programm minimiert
Um zu verhindern, dass ein aus einer Batchdatei (oder der Eingabeaufforderung) gestartetes Programm den Fokus erhält, starten Sie es minimiert:
start /min /normal c:\windows\system32\taskmgr.exe
Dadurch wird das Programm geöffnet, aber da das Fenster minimiert ist, kann es den Fokus nicht übernehmen.
BEARBEITEN:Das Starten des Task-Managers ist ein Sonderfall. Unabhängig davon, wie Sie dieses Programm starten,stetsübernimmt den Systemfokus.
In diesem Fall können Sie nichts tun. Es ist einfach nicht möglich, den Systemfokus aus einer Batchdatei zurückzufordern. (Denken Sie daran, dass Batch-Skripting aus der Zeit stammt, als es überhaupt keine Anwendungsfenster gab!)
Antwort2
Sie können einfach eineeindeutige Zeitstempelvariableim Batch-Skript und verwenden Sie diese Variable als Wert fürTitelpro jeder Ausführung des Skripts.
Sie können dannappaktivierenÜbergeben Sie den Wert des BefehlsfenstersTitelzu aktivieren, erstellen Sie ein dynamisches VBScript mit dem Wert und führen Sie dieses Script dann aus mitcscriptum es zu aktivieren.
Ich habe es einfach ping -n 06 127.0.0.1 > nul
als 5 Sekunden Pause verwendet, um nach der Zeit zu wartenTaskmanagerwird gestartet, bevor das eigentliche Batch-Skript mit dem Titel window aktiviert wird durchcscriptAusführung.
Batch-Skript
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
Weitere Ressourcen
Antwort3
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
Dieser Wille:
- Echo 1
- Öffnen Sie den Task-Manager
- Warten Sie, bis der Task-Manager gestartet ist (1 s)
- Erstellen, Ausführen und Löschen eines VBS-Skripts, um mit Alt+Tab zum cmd-Fenster zurückzukehren
- Echo 2
- Pause
Antwort4
In einer Batchdatei hat das funktioniert, ein paar Mal getestet und funktioniert.
Computer neu gestartet und immer noch getestet und funktioniert.
C:\WINDOWS\nircmd.exe sendkeypress rwin+home
NirCmd v2.81 (Konsolenversion)
http://www.nirsoft.net
Der obige Batch-Befehl ändert den Systemfokus
vom „Windows Task-Manager“
und legt den Systemfokus
auf das Batch-Dateifenster.
Hintergrund:
Batch ausgeführt,
der taskmgr.exe aufruft, und
Batch führt den obigen Befehl
aus. Jetzt wird Batch durch Drücken von Strg+C gestoppt.
Sie müssen nicht mit der Maus auf das Batch-Fenster klicken.
Sie müssen nicht mit Alt+Tab zum Batch-Fenster wechseln.
Der obige einzeilige Batchdateibefehl ändert den Systemfokus.
Nachteil: nircmd.exe ist Software von Drittanbietern
und keine sofort einsatzbereite Lösung.
Referenz
Lassen Sie eine Batchdatei alle Fenster außer sich selbst minimieren ODER aktivieren Sie etwas, das
--