バッチ ファイルをタスク スイッチャーにするにはどうすればよいでしょうか?

バッチ ファイルをタスク スイッチャーにするにはどうすればよいでしょうか?

バッチ ファイルをタスク スイッチャーにするにはどうすればよいでしょうか?

Windows XP および Windows 7 のバッチ ファイルの場合...
バッチ ファイルは次のとおりです。

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

問題は、フォーカスがタスク マネージャーに留まっていることです。
問題は、フォーカスがバッチ ウィンドウにないことです。

バッチ ファイル ウィンドウにフォーカスを戻すにはどうすればよいでしょうか?
タスクをバッチに切り替えるにはどうすればよいでしょうか?

バッチ ファイル コマンドを使用し、マウスでバッチ ファイル ウィンドウをクリックしたり、キーボードの Alt + Tab キーを押さずに、バッチ ウィンドウにフォーカスを合わせるにはどうすればよいでしょうか。

答え1

プログラムを最小化した状態で起動する

バッチ ファイル (またはコマンド プロンプト) から起動されたプログラムがフォーカスを取得しないようにするには、最小化した状態で起動します。

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

これによりプログラムは開きますが、ウィンドウが最小化されているため、フォーカスを取得できません。


編集:タスクマネージャの起動は特別なケースです。このプログラムをどのように起動するかに関係なく、いつもシステムフォーカスを取得します。

この場合、できることは何もありません。バッチ ファイルからシステム フォーカスを取り戻すことは不可能なのです。(バッチ スクリプトは、アプリケーション ウィンドウがまったくなかった時代から来ていることを思い出してください。)

答え2

簡単に作成できます固有のタイムスタンプ変数バッチスクリプトでその変数を使用してその値として設定しますタイトルスクリプトの実行ごとに。

その後、アプリをアクティブ化cmdウィンドウの値を渡すタイトルアクティブにするには、値を持つ動的なVBScriptを作成し、そのスクリプトを実行します。スクリプトそれをアクティブにします。

ping -n 06 127.0.0.1 > nul私は時間が経ってから5秒間の一時停止として使用しましたタスクマネージャー実際のバッチスクリプトが起動される前に起動されます。スクリプト実行。

バッチスクリプト

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 

その他のリソース

答え3

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 でコマンド ウィンドウに戻る
  • エコー2
  • 一時停止

答え4

バッチ ファイルでは、これでうまくいきました。数回テストしたところ、問題あり
ませんでした。コンピューターを再起動しても、テストは問題なく完了しました。

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

NirCmd v2.81 (コンソール版)
http://www.nirsoft.net

上記のバッチ コマンドは、システム フォーカスを
「Windows タスク マネージャー」から変更し
、システム フォーカスを
バッチ ファイル ウィンドウに移動します。

背景: taskmgr.exe
を呼び出すバッチを実行し、 バッチが上記のコマンドを実行し、 Ctrl + C を押すとバッチが停止します。


バッチ ウィンドウをマウスでクリックする必要はありません。
バッチ ウィンドウに Alt キーを押しながら Tab キーを押す必要もありません。

上記の 1 行のバッチ ファイル コマンドは、システム フォーカスを変更します。


欠点: nircmd.exe は、すぐに使用できるソリューションではなく、 サードパーティ ソフトウェアです。

参照
バッチファイルで、それ自身以外のすべてのウィンドウを最小化するか、

--

関連情報