获取正在运行的程序的属性

Getting Properties of a Running Program

本文关键字:程序 属性 运行 获取      更新时间:2023-10-16

我想开发一个程序,它ID是一张牌,因为它在另一个正在运行的程序(如扑克或红心游戏或其他什么(中播放。我首先尝试在已经运行的游戏程序上获取我需要的信息,并且从一开始就遇到了问题。我正在运行 MSVC++ 2013 并开发一个 MFC 应用程序。现在我正在玩红心游戏,这是代码:

HWND hwnd =  FindWindowA(NULL, "Hearts");
if (hwnd == NULL)
{  /* window not found*/
}
else
{  /* window was found */
RECT rect;
GetWindowRect(hwnd, &rect);
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
}

所以我得到了很好的hwnd,代码的工作原理取决于我是否打开了红心。但是GetWindowRect(hwnd, &rect);不会编译的台词说

"错误 C2660:'CWnd::GetWindowRect':函数不接受 2 个参数"。

有一个GetWindowRect函数,它只有 rect 参数,但获取我正在处理的程序窗口的属性。有很多关于GetWindowRect的文档显示了上面的两个参数,但是我如何调用该子例程?

当您在 MFC 窗口类中时,您正在调用CWnd::GetWindowRect函数 - 您希望调用 Win32 API 中的函数,因此:

::GetWindowRect(hwnd, &rect);

其中::范围解析运算符(左侧没有命名空间或类名(表示在全局范围内调用函数。