这样做的功能显然在 User32.dll 中。我一直在尝试修改 rundll32.exe,但是当我运行它时:
rundll32 User32.dll,GetActiveWindow
它没有错误地退出,但什么也不做。退出代码当然只会说明运行 rundll32 是否有错误。
是否有一个 bat 脚本技巧来检索该值并将其填充到变量中?
这样做的功能显然在 User32.dll 中。我一直在尝试修改 rundll32.exe,但是当我运行它时:
rundll32 User32.dll,GetActiveWindow
它没有错误地退出,但什么也不做。退出代码当然只会说明运行 rundll32 是否有错误。
是否有一个 bat 脚本技巧来检索该值并将其填充到变量中?
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
在/wait /min
尝试将 STDOUT 上的值分配给somevar
. 我喜欢ENABLEDELAYEDEXPANSION
在批处理文件中分配环境变量时使用,然后在同一个批处理文件中使用它。