C# 在C语言中侦听操作系统消息#

C# 在C语言中侦听操作系统消息#,c#,.net,wndproc,C#,.net,Wndproc,C#中是否有类似于WndProc方法的方法来侦听操作系统消息。我不能使用WndProc,因为我的类既不是表单,也不是从控件(其DLL)继承的 你应该使用 如果您想监听特定消息,可以访问Win API。 我曾经有一个项目(见对问题的评论)监听可移动USB驱动器,WMI工作得很好 您也可以使用interop,但我发现它很凌乱,但是很难使用。在没有可见窗口的情况下接收windows消息的标准方法是创建一个不可见的窗口来接收消息。检查此项: 似乎可以覆盖WndProc,但我自己还没有尝试过 如果您有表单

C#中是否有类似于WndProc方法的方法来侦听操作系统消息。我不能使用WndProc,因为我的类既不是表单,也不是从控件(其DLL)继承的

你应该使用

如果您想监听特定消息,可以访问Win API。 我曾经有一个项目(见对问题的评论)监听可移动USB驱动器,WMI工作得很好


您也可以使用interop,但我发现它很凌乱,但是很难使用。

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

检查此项:

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

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


如果没有,您可以尝试使用添加消息筛选器来监视Windows消息。

我将此作为注释,因为我不确定,但我认为您可以使用WMI。我在某个地方用它来监听可移动USB驱动器。@JonasVan你能给我一些链接吗?我如何使用它?(示例)…谢谢你我会给你我正在做的项目。你想要什么类型的操作系统消息?给你,我会把它留到今天,至少,如果我忘了把它取下来,时间会更长:)我在我的课堂上创建了虚拟表单…但它仍然说没有合适的方法来覆盖WndProc…?你是如何做到无形表单和接收的?谢谢。我总是用win32 api编写代码,并调用CreateWindow,但毫无疑问,有一种.net的方式。问题是我必须在DLL中获取它,而不是WinFormproject@Sisya-是,但如果从具有消息循环(无论是WinForms、WPF还是非托管)的应用程序调用DLL,则application.AddMessageFilter可能会工作。无论如何,值得一试。
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);
    }