これを行う関数は明らかに User32.dll にあります。私はrundll32.exeをいじろうとしてきましたが、これを実行すると:
rundll32 User32.dll,GetActiveWindow
エラーなしで終了しますが、何もしません。もちろん、終了コードは、rundll32 の実行中にエラーが発生したかどうかのみを示します。
その値を取得して変数に入れるバット スクリプトのトリックはありますか?
これを行う関数は明らかに User32.dll にあります。私はrundll32.exeをいじろうとしてきましたが、これを実行すると:
rundll32 User32.dll,GetActiveWindow
エラーなしで終了しますが、何もしません。もちろん、終了コードは、rundll32 の実行中にエラーが発生したかどうかのみを示します。
その値を取得して変数に入れるバット スクリプトのトリックはありますか?
Window API 関数は、DOS からそのように呼び出されるようには設計されていません。最小化して実行するコンソール アプリケーションを作成する必要があります。関数を呼び出してGetActiveWindow()
、アプリケーションのタイトルを STDOUT に書き出すことができます。次に、その値を次のようにバッチ ファイルの環境変数に割り当てることができます。
setlocal ENABLEDELAYEDEXPANSION
for /f "delims=" %%i in ('start /wait /min YourCustomApp.exe') do set somevar=%%i
echo The active program is "!somevar!".
endlocal
STDOUTの/wait /min
値を に割り当てようとする前に、アプリが終了するまでバッチ ファイルを待機させますsomevar
。ENABLEDELAYEDEXPANSION
バッチ ファイルで環境変数を割り当て、後で同じバッチ ファイルでそれを使用するときはいつでも使用するのが好きです。