我可以选择我想要的任何可见窗口并获得其主要句柄,但我无法处理发送或接收消息。 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;
}
}
答案 0 :(得分:4)
将消息发送到窗口非常简单 - 使用PostMessage()
或SendMessage...()
(尽管为了模拟键盘输入,您应该使用SendInput()
代替)。但是,GetMessage()
只能检索调用线程拥有的窗口的消息,它无法检索另一个线程/进程拥有的窗口的消息。如果您需要处理针对其他应用程序的消息,则必须通过SetWindowsHookEx()
使用消息钩子。