我已经用VC++编写了一个服务。我按照这里的教程进行操作。现在,我正在尝试找出如何接收消息,例如DBT_DEVICEARRIVAL、DBT_DEVICEREMOVECOMPLETE、WM_COPYDATA等,就像普通应用程序具有顶级窗口一样。当我搜索时,我发现了这篇MSDN文章。
在“广播消息”部分的最后一段中:
应用程序通过其顶级窗口的窗口过程接收消息。消息不会发送到子窗口。服务可以通过窗口过程或其服务控制处理程序接收消息。
但几乎不可能找到任何如何执行此操作的示例。
在“广播消息”部分的最后一段中:
应用程序通过其顶级窗口的窗口过程接收消息。消息不会发送到子窗口。服务可以通过窗口过程或其服务控制处理程序接收消息。
但几乎不可能找到任何如何执行此操作的示例。
如何将WndProc与我的服务关联,以便接收消息?
或者,如何使我的服务控制处理程序函数接收Windows消息?我的服务控制处理程序只有一个DWORD参数,没有WndProc的UINT、WPARAM、LPARAM等。
我已经阅读了一些关于使用隐藏窗口和仅消息窗口等方法的内容,但我不认为我可以在服务中使用它们;也不想使用。如果我能够用MSDN提到的这两种方法中的任一种实现它,那就太好了。
服务描述:
该服务将检测USB设备插入并复制一些文件到其中。它还必须跟踪某些目录和文件的更改,以便知道要复制哪些文件。
这个基本功能可以扩展到包括其他事情,在未来可能需要接收许多其他我现在不知道的Windows消息。
上面提到的示例消息只是从我开发常规Windows应用程序时习惯于使用的内容中摘取的。我理解如果在编写服务时它们不适合或不安全。