Як зробити пакетний файл перемикачем завдань?


1

Як зробити пакетний файл перемикачем завдань?

З Windows XP і Windows 7 пакетних файлів ...
Пакетний файл:

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

Проблема полягає в тому, що фокус залишається на диспетчері завдань.
Проблема полягає не в фокусі вікна партії.

Як повернути фокус назад до вікна пакетного файлу?
Як переключити завдання на партію?

Як отримати фокус на пакетне вікно за допомогою команд командного файлу і без використання миші натиснути на вікно пакетного файлу і без натискання Alt-Tab на клавіатурі?

Відповіді:


2

Запуск програми мінімізований

Щоб запобігти запуск програми з пакетного файлу (або командного рядка) з фокусування, почніть його мінімізувати:

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

Це відкриває програму, але оскільки вікно мінімізовано, воно не може взяти на себе фокус.


EDIT: Запуск диспетчера завдань - це особливий випадок. Незалежно від того, як ви запускаєте цю програму, вона завжди приймає системний фокус.

У цьому випадку ви нічого не можете зробити. Це просто неможливо відновити системний фокус з пакетного файлу. (Пам'ятайте, що пакетні сценарії починаються з тих днів, коли взагалі не було вікон програм!)


Тільки половина працює, тому що диспетчер завдань - Min, але фокус не на вікні пакета. старт / хв / нормальний c: windows system32 askmgr.exe
Joseph

Ви правильні ... це цікаво. Здається, незалежно від того, як ви запускаєте Task Manager, він бере на себе фокус. Я оновлю відповідь.
Twisty Impersonator

Чудово ми можемо дублювати Проблему. Для ясності фокус повинен бути завжди на пакетному вікні, щоб зробити Ctrl-C, щоб зупинити пакет.
Joseph

@Joseph Як пояснюється в моїй відповіді, ви не можете повернути фокус до вікна пакета, як тільки він буде переміщений в іншому місці (якщо ви не відкриті для використання пакетних програм).
Twisty Impersonator

1

Ви можете просто створити a унікальна змінна мітки часу у пакетному сценарії та використовуйте цю змінну для встановлення її значення назва за кожне виконання сценарію.

Потім можна використовувати appactivate передаючи їй значення вікна cmd назва Щоб активувати, створіть динамічний VBScript зі значенням, а потім виконайте цей скрипт cscript для активації.

Я тільки що використав ping -n 06 127.0.0.1 > nul 5-секундну паузу для очікування після закінчення часу Диспетчер завдань запускається до того, як фактичний пакетний скрипт під назвою вікно активується cscript виконання.

Пакетний сценарій

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 

Подальші ресурси


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

Це буде:

  • Ехо 1
  • Відкрийте диспетчер завдань
  • Зачекайте, доки менеджер завдань не запуститься (1 с)
  • Створіть, запустіть і видаліть VBS-скрипт до Alt + Tab назад до cmd-вікна
  • Ехо 2
  • Пауза

@Facebook потрібно 10k реп, щоб побачити видалені повідомлення.
Twisty Impersonator

0

У пакетному файлі це зробило трюк, перевіривши кілька разів ок.
Перезавантаження комп'ютера і все ще перевірено добре.

C: WINDOWS nircmd.exe sendkeypress rwin + home

NirCmd v2.81 (версія консолі)
http://www.nirsoft.net

Над командою batch змінюється фокус системи
з "Диспетчера завдань Windows"
і ставить фокус системи
у вікні Пакетний файл.

Фон:
Ранний пакет
викликає taskmgr.exe і
партія виконує вище команду і
тепер натискання Ctrl-C зупиняє пакет.

Не потрібно клацати мишкою на пакетному вікні.
Не потрібно Alt-Tab перейти до вікна пакетів.

Вище, один рядок, команда командного файлу змінює фокус системи.

Недоліком nircmd.exe є програмне забезпечення третіх сторін
проти вихідного розчину.

Довідка
Мати пакетний файл мінімізувати всі вікна, але сам АБО активувати те, що може

-

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.