如何检查是否按下了一个窗口按钮C ++

时间:2011-04-25 14:55:11

标签: c++ winapi api

如何测试是否按下按钮? 我使用EnumChildWindows()来枚举给定窗口的子窗口,其中一个子窗口是一个按钮,我想测试是否按下了特定按钮。
直到我知道的代码是:

BOOL CALLBACK MyEnumProc(HWND hwnd, LPARAM lParam)
{
    char buffer[256];
    GetWindowText(hwnd, buffer, sizeof(buffer));
    cout << buffer << endl;
    return true;
}

int main()
{
    HWND hwnd = FindWindow(0, "Window to find");
    EnumChildWindows(hwnd, MyEnumProc, 0);

    return 0;
}

2 个答案:

答案 0 :(得分:4)

您可以将BM_GETSTATE消息发送到按钮控件,如果按下则结果将是 BST_PUSHED。

答案 1 :(得分:1)

您需要将一个DLL注入进程空间,挂钩窗口消息循环(就像您以前在本机Win32 API C代码中手工编写子类窗口,Window Proc)(google-able)并听取实际消息

所有这些对我来说都是古老的东西,我担心最近的Windows版本(希望如此)使得这一点变得更加困难。

也就是说,如果您可以使用适当级别的权限获得受信任的应用程序,那么您仍然可以执行此操作