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