我正在尝试在控件中实现一个消息循环,我可以用来查看当前进程中的所有消息,查找特定消息,并在检测到某个消息时触发事件。
这是我目前的代码:
public void MessageHandler()
{
MSG msg;
while (GetMessage(out msg, IntPtr.Zero, 0, 0) > 0)
{
if (msg.message == 272)
{
// Fire event here
}
else
{
TranslateMessage(ref msg);
DispatchMessage(ref msg);
}
}
}
[DllImport("user32.dll")]
static extern sbyte GetMessage(out MSG lpMsg, IntPtr hWnd, uint wMsgFilterMin, uint wMsgFilterMax);
[DllImport("user32.dll")]
static extern bool TranslateMessage([In] ref MSG lpMsg);
[DllImport("user32.dll")]
static extern IntPtr DispatchMessage([In] ref MSG lpmsg);
此循环当前正异步运行。我遇到的问题是我似乎没有收到任何消息。循环退出GetMessage()调用。
我尝试在(true)运行循环,并且如果GetMessage()< = 0的返回值继续,但这似乎产生相同的结果。
任何输入都将不胜感激。