0

これを行う関数は明らかに User32.dll にあります。私はrundll32.exeをいじろうとしてきましたが、これを実行すると:

rundll32 User32.dll,GetActiveWindow

エラーなしで終了しますが、何もしません。もちろん、終了コードは、rundll32 の実行中にエラーが発生したかどうかのみを示します。

その値を取得して変数に入れるバット スクリプトのトリックはありますか?

4

1 に答える 1

1

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値を に割り当てようとする前に、アプリが終了するまでバッチ ファイルを待機させますsomevarENABLEDELAYEDEXPANSIONバッチ ファイルで環境変数を割り当て、後で同じバッチ ファイルでそれを使用するときはいつでも使用するのが好きです。

于 2013-03-01T21:26:08.473 に答える