实现消息循环以捕获所有进程消息

时间:2013-10-08 17:55:33

标签: c# .net winapi

我正在尝试在控件中实现一个消息循环,我可以用来查看当前进程中的所有消息,查找特定消息,并在检测到某个消息时触发事件。

这是我目前的代码:

    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的返回值继续,但这似乎产生相同的结果。

任何输入都将不胜感激。

0 个答案:

没有答案