0

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

rundll32 User32.dll,GetActiveWindow

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

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

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

/wait /min尝试将 STDOUT 上的值分配给somevar. 我喜欢ENABLEDELAYEDEXPANSION在批处理文件中分配环境变量时使用,然后在同一个批处理文件中使用它。

于 2013-03-01T21:26:08.473 回答