如何从另一个窗口/程序发送/接收消息?

时间:2014-08-21 16:49:18

标签: c++ windows winapi messages

我可以选择我想要的任何可见窗口并获得其主要句柄,但我无法处理发送或接收消息。 GetMessage()函数总是返回0.如果我想在属于另一个窗口的文本框当前处于活动状态时发送有关击键的消息,该怎么办?

MSG msg;
WPARAM wParam;
LPARAM lParam;
UINT message;
while(TRUE)
{
    GetMessage(&msg, rHwnd, 0, 0); // get message from another window
    TranslateMessage(&msg);
    wParam = msg.wParam;
    lParam = msg.lParam;
    message = msg.message;
    switch(message) // check whether an user clicked the 't' key
    {
        case WM_CHAR:
            switch(wParam)
            {
                case 't':
                    MessageBox(NULL, "t", "", 0);
                    break;
            }
            break;
    }
}

1 个答案:

答案 0 :(得分:4)

将消息发送到窗口非常简单 - 使用PostMessage()SendMessage...()(尽管为了模拟键盘输入,您应该使用SendInput()代替)。但是,GetMessage()只能检索调用线程拥有的窗口的消息,它无法检索另一个线程/进程拥有的窗口的消息。如果您需要处理针对其他应用程序的消息,则必须通过SetWindowsHookEx()使用消息钩子。