【问题标题】:Getting Properties of a Running Program获取正在运行的程序的属性
【发布时间】:2018-05-31 00:37:48
【问题描述】:

我想开发一个程序,它的 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 就好了,代码的工作取决于我是否打开了 Hearts。但是 GetWindowRect(hwnd, &rect); 行不会编译说

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

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

【问题讨论】:

  • 完美!谢谢。

标签: c++ winapi mfc


【解决方案1】:

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

::GetWindowRect(hwnd, &rect);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 2019-03-25
    • 2018-08-06
    相关资源
    最近更新 更多