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);
}
答案 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消息。