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

时间:2018-05-30 15:44:50

标签: c++ winapi mfc

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

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就好了,代码的工作原理取决于我是否打开了Heart。但是行GetWindowRect(hwnd, &rect);不会编译说

  

“错误C2660:'CWnd :: GetWindowRect':函数不带2个参数”。

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

1 个答案:

答案 0 :(得分:4)

当你在MFC窗口类中时,你正在调用CWnd::GetWindowRect函数 - 你想调用Win32 API中的那个,所以:

::GetWindowRect(hwnd, &rect);

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