MFC可不可以编写windows服务程序
我想写个记录U盘插入的windows服务U盘插入,响应系统的WM_DEVICECHANGE消息服务程序一般是控制台的,但是(据我所知)控制台程序不能响应系统消息不知道这种...
我想写个记录U盘插入的windows服务
U盘插入,响应系统的WM_DEVICECHANGE消息
服务程序一般是控制台的,但是(据我所知)控制台程序不能响应系统消息
不知道这种服务怎么写?
Sadusaga,可以说具体点吗?最好有例子
比如我新建一个MFC对话框程序,在OnInitDialog函数中调用CreateService函数吗?在程序结束时候要不要做什么善后工作?
我今天刚刚用你的方法试了一下,还是不行
我在程序一个按钮事件中用CreateService,确实创建了服务,但是在windows的服务管理器中启动它,却报错了:“错误1053: 服务没有及时响应启动或控制请求”
我在VC知识库的这个网页看到写系统服务的东西http://www.vckbase.com/document/viewdoc/?id=1474
首先不是要启动一个分派表吗?然后写服务控制函数、服务主函数。怎么这里调用CreateService函数?好像完全不一样啊…… 展开
U盘插入,响应系统的WM_DEVICECHANGE消息
服务程序一般是控制台的,但是(据我所知)控制台程序不能响应系统消息
不知道这种服务怎么写?
Sadusaga,可以说具体点吗?最好有例子
比如我新建一个MFC对话框程序,在OnInitDialog函数中调用CreateService函数吗?在程序结束时候要不要做什么善后工作?
我今天刚刚用你的方法试了一下,还是不行
我在程序一个按钮事件中用CreateService,确实创建了服务,但是在windows的服务管理器中启动它,却报错了:“错误1053: 服务没有及时响应启动或控制请求”
我在VC知识库的这个网页看到写系统服务的东西http://www.vckbase.com/document/viewdoc/?id=1474
首先不是要启动一个分派表吗?然后写服务控制函数、服务主函数。怎么这里调用CreateService函数?好像完全不一样啊…… 展开
2个回答
展开全部
可以不是控制台的,通过调用CreateService创建服务。
schService = CreateService(
schSCManager, // SCManager database
TEXT("Sample_Srv"), // name of service
lpszDisplayName, // service name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS, // service type
SERVICE_DEMAND_START, // start type
SERVICE_ERROR_NORMAL, // error control type
szPath, // path to service's binary
NULL, // no load ordering group
NULL, // no tag identifier
NULL, // no dependencies
NULL, // LocalSystem account
NULL); // no password
dwServerType的属性要加上SERVICE_INTERACTIVE_PROCESS
这样服务才能显示界面。
通过成功的创建服务,系统就会启动的时候加载你的程序。
schService = CreateService(
schSCManager, // SCManager database
TEXT("Sample_Srv"), // name of service
lpszDisplayName, // service name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS, // service type
SERVICE_DEMAND_START, // start type
SERVICE_ERROR_NORMAL, // error control type
szPath, // path to service's binary
NULL, // no load ordering group
NULL, // no tag identifier
NULL, // no dependencies
NULL, // LocalSystem account
NULL); // no password
dwServerType的属性要加上SERVICE_INTERACTIVE_PROCESS
这样服务才能显示界面。
通过成功的创建服务,系统就会启动的时候加载你的程序。
展开全部
msdn上说RegisterDeviceNotification可以给服务注册设备消息,
如果还不行就创建个隐藏窗口吧
这里调用这里调用CreateService相当于你说的文章中这段
sc create MemoryStatus binpath= c:\MyServices\MemoryStatus.exe
只是把程序安装成服务而已,程序本身还是要按照你说的要启动一个服务分派表的。我想RegisterDeviceNotification后系统就能发送设备消息到服务的控制处理器。
如果还不行就创建个隐藏窗口吧
这里调用这里调用CreateService相当于你说的文章中这段
sc create MemoryStatus binpath= c:\MyServices\MemoryStatus.exe
只是把程序安装成服务而已,程序本身还是要按照你说的要启动一个服务分派表的。我想RegisterDeviceNotification后系统就能发送设备消息到服务的控制处理器。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询