我已经四处寻找了很长一段时间,似乎无法找到一个好的方法来做到这一点。
基本上我有一个使用 WPF(没有可见窗口)的 C# 进程,我需要在其中处理 WM_ 事件(例如;这样当用户选择注销或重新启动他们的机器时,我可以优雅地关闭)WM_CLOSE
。WM_DESTROY
我在那里看到了许多解决方案,建议使用System.Windows.InteropServices
to callAddHook
并为其提供一个指向函数的指针,该函数随后变为WndProc
. 问题在于,据我所知,它取决于实际可见的窗口(在这种情况下没有窗口)。
建议但不起作用的另一种方法是覆盖WndProc
WinForm 的方法,但此过程没有可见的窗体或窗口。
我还发现了有关仅消息窗口的内容。某种仍然接收 WM_ 事件的不可见窗口。据我所知,这仅在Microsoft.WindowsCE.Forms
程序集中可用。我在我的项目中添加了对该程序集的引用并将 MessageWindow 子类化,如下所示:http: //msdn.microsoft.com/en-us/library/microsoft.windowsce.forms.messagewindow.aspx但它似乎仍然不起作用。WndProc 内的断点没有被命中。
有什么线索吗?