是否可以通过bat脚本确定焦点窗口/应用程序?

时间:2013-03-01 20:20:52

标签: windows scripting batch-file rundll32

这样做的功能显然是在User32.dll中。我一直在尝试修改rundll32.exe,但是当我运行它时:

rundll32 User32.dll,GetActiveWindow

退出时没有错误但什么也没做。退出代码当然只会说明是否有运行rundll32的错误。

是否有一个bat脚本技巧来检索该值并将其填充到变量中?

1 个答案:

答案 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