winapi – 在服务中接收Windows消息
我在VC写了一个服务.我关注了
tutorial here.现在,我正在尝试了解如何接收DBT_DEVICEARRIVAL,DBT_DEVICEREMOVECOMPLETE,WM_COPYDATA等消息,就像具有顶级窗口的常规应用程序一样.在搜索时,我遇到了
this MSDN article
在“广播信息”部分的最后几段中:
但几乎不可能找到任何如何做的例子. >如何将WndProc与我的服务相关联以便它接收消息? 我读过1)使用隐藏窗口和2)仅消息窗口等,但我认为我不能在服务中使用它们;不想.如果我能用MSDN提到的两种方式中的任何一种方式完成它,我会很高兴. 服务描述: 该服务将检测USB设备插入并将一些文件复制到其中.它还必须跟踪某些目录和文件的更改,以便它知道要复制哪些目录和文件. 该基本功能可以扩展到包括将来的其他内容.所以,我可能必须能够收到许多其他我现在都不知道的Windows消息. 在开发常规Windows应用程序时,上面提到的示例消息简单地取自我习惯的内容.在编写服务时,我了解它们是否适合或不安全. 解决方法
嗯,你只需创建一个普通的消息循环就像你编写一个Win32窗口应用程序的纯C实现一样 – 没有涉及任何框架.
例: while(GetMessage(...)) ... 您可以使用PeekMessage或 即你甚至不需要窗户.每个线程都可以有一个消息循环.所以它会阻塞,但只有当前的线程.你必须弄清楚如何将信息传递给需要它的其他线程. 但是很大 但是,不要努力妥协MS为你提供的东西不要射击你自己的下半身,你应该read about Shatter Attacks over on Wikipedia并使用适当的IPC技术进行服务(有很多可用的,从MMF到管道到信号量组合,互斥量和事件). 如果您打算在用户桌面上接收窗口消息但具有特权上下文(无论如何都应该阻止会话分离),此部分是相关的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows中的Apache虚拟主机 – 如何处理符号链接
- ms-access – 如何防止“请告诉Microsoft有关此问
- 服务器安全设置技术实例系列教程--MSSQL安全设置
- 为Windows Phone 8编译SQLite
- 厨师错误:“LoadError:没有这样的文件加载 –
- windows-8 – 如何在Windows 8 metro app live t
- windows-server-2008-r2 – 与Microsoft NPS / R
- 由于图形处理单元配置不支持Windows手机模拟器(M
- Windows – Powershell:捕获程序stdout和stderr
- Windows – Win32无法恢复自行暂停的线程