在C#中侦听OS消息

时间:2011-04-08 06:39:09

标签: c# .net wndproc

C#中是否有类似于WndProc方法的方法来监听OS消息。我不能使用WndProc,因为我的类既不是Form也不是从Control继承(其DLL)

protected override void WndProc(ref System.Windows.Forms.Message m)
    {
        switch (m.Msg)
        {
            // listen os messages


            // Ueye Message
            case uEye.IS_UEYE_MESSAGE:
                //fetch frame
                break;
        }
        base.WndProc(ref m);
    }

5 个答案:

答案 0 :(得分:1)

如果您想收听特定消息,

WMI会执行此操作。 我曾经有一个项目(见问题评论),听取了可移动的USB驱动器,WMI工作正常。

你也可以使用互操作但我发现它很乱,但YMMV。

答案 1 :(得分:0)

您应该使用Windows.Interop

可以访问Win API

答案 2 :(得分:0)

在没有可见窗口的情况下接收Windows消息的标准方法是创建一个不可见的窗口来接收消息。

答案 3 :(得分:0)

请检查:http://social.msdn.microsoft.com/Forums/en-IE/winforms/thread/b44f06fb-fc4a-4fac-87cd-48b2953ea5fa

似乎可以覆盖WndProc,但我自己没有尝试过!

答案 4 :(得分:0)

如果您有表格(可见或其他),请查看Form.WndProc

如果没有,您可以尝试使用Application.AddMessageFilter添加消息过滤器来监控Windows消息。