基于MFC编写Windows服务程序
2016-03-17 16:22
309 查看
近期由于项目需要,编写了一个基于MFC对话框的Windows服务程序,现把方法和大家分享一下,希望高手指正。程序实现的基本功能如下:
1、 注册为Windows服务程序,随系统启动
2、 作为服务端,提供客户端的连接(TCP)
3、 有可视化界面,监视客户端的连接情况
4、 具有系统托盘图标
最终运行界面为:
Windows服务程序的基本概念不再介绍,不懂的可以去百度上搜一下,这里直接介绍程序的开发步骤。
一、创建基于MFC对话框的项目(这里使用的是VC6.0,项目名称为SocketTest)
二、注册为Windows服务程序
(1)在SocketTest.cpp文件中定义全局变量(添加文件包含:#include"WINSVC.h")
(2)修改BOOL CSocketTestApp::InitInstance()函数,注释掉如图代码,添加如图代码。
(3)几个全局函数的代码如下。
(4)在主对话框中自定义消息:#define WM_USER_CLOSE_WND(WM_USER+111),用于程序退出。在ServerSocket.h文件中,添加CSocketTestDlg类的消息函数:afx_msg void OnUserClose(WPARAM wParam,LPARAM lParam),并在ServerSocket.cpp文件中添加消息映射ON_MESSAGE(WM_USER_CLOSE_WND,OnUserClose),OnUserClose函数的实现代码为:
三、实现系统托盘图标
(1)在ServerSocket.h文件中定义:#define UM_TRAYNOTIFY (WM_USER+110) ,在CSocketTestDlg类中添加成员变量:NOTIFYICONDATA m_nid,添加消息定义函数:afx_msg LRESULT OnTrayNotify(WPARAM wParam,LPARAMlParam);;在SocketTestDlg.cpp文件中添加消息映射:ON_MESSAGE(UM_TRAYNOTIFY,OnTrayNotify),OnTrayNotify函数代码如下:
(2)在CSocketTestDlg的构造函数和析构函数中添加如下代码
(3)在BOOL CSocketTestDlg::OnInitDialog()函数中添加如图代码
(4)添加窗口的WM_SIZE和WM_CLOSE消息函数
(5)在资源管理器中添加一个菜单(IDR_MENU_TRAY),添加两个菜单项:“恢复窗口”(IDR_TRAY_RESTORE)和“退出”(IDR_TRAY_EXIT)
四、实现网络服务
(1)添加类CServerSocket,派生于CSocket,对该类进行类向导添加三个函数OnAccept()、OnClose()、OnReceive(),函数中调用的函数都在主对话框中实现。
(2)修改主对话框的类定义。
(3)在BOOL CSocketTestDlg::OnInitDialog()函数中打开网络服务,并实现添加上线用户、删除下线用户、接收数据的函数。
五、将编译好的exe文件注册为服务并运行
打开cmd,依次输入命令:SocketTest.exe /install和sc start AutoWorkSrv,这时程序已运行,并可以在控制面板的计算机管理中看到如下界面:
六、结束语
以上内容整理匆忙,难免有不当之处,请批评指正。需要源码的可以和我联系。
我的邮箱:459238972@qq.com
1、 注册为Windows服务程序,随系统启动
2、 作为服务端,提供客户端的连接(TCP)
3、 有可视化界面,监视客户端的连接情况
4、 具有系统托盘图标
最终运行界面为:
Windows服务程序的基本概念不再介绍,不懂的可以去百度上搜一下,这里直接介绍程序的开发步骤。
一、创建基于MFC对话框的项目(这里使用的是VC6.0,项目名称为SocketTest)
二、注册为Windows服务程序
(1)在SocketTest.cpp文件中定义全局变量(添加文件包含:#include"WINSVC.h")
(2)修改BOOL CSocketTestApp::InitInstance()函数,注释掉如图代码,添加如图代码。
(3)几个全局函数的代码如下。
(4)在主对话框中自定义消息:#define WM_USER_CLOSE_WND(WM_USER+111),用于程序退出。在ServerSocket.h文件中,添加CSocketTestDlg类的消息函数:afx_msg void OnUserClose(WPARAM wParam,LPARAM lParam),并在ServerSocket.cpp文件中添加消息映射ON_MESSAGE(WM_USER_CLOSE_WND,OnUserClose),OnUserClose函数的实现代码为:
三、实现系统托盘图标
(1)在ServerSocket.h文件中定义:#define UM_TRAYNOTIFY (WM_USER+110) ,在CSocketTestDlg类中添加成员变量:NOTIFYICONDATA m_nid,添加消息定义函数:afx_msg LRESULT OnTrayNotify(WPARAM wParam,LPARAMlParam);;在SocketTestDlg.cpp文件中添加消息映射:ON_MESSAGE(UM_TRAYNOTIFY,OnTrayNotify),OnTrayNotify函数代码如下:
(2)在CSocketTestDlg的构造函数和析构函数中添加如下代码
(3)在BOOL CSocketTestDlg::OnInitDialog()函数中添加如图代码
(4)添加窗口的WM_SIZE和WM_CLOSE消息函数
(5)在资源管理器中添加一个菜单(IDR_MENU_TRAY),添加两个菜单项:“恢复窗口”(IDR_TRAY_RESTORE)和“退出”(IDR_TRAY_EXIT)
四、实现网络服务
(1)添加类CServerSocket,派生于CSocket,对该类进行类向导添加三个函数OnAccept()、OnClose()、OnReceive(),函数中调用的函数都在主对话框中实现。
(2)修改主对话框的类定义。
(3)在BOOL CSocketTestDlg::OnInitDialog()函数中打开网络服务,并实现添加上线用户、删除下线用户、接收数据的函数。
五、将编译好的exe文件注册为服务并运行
打开cmd,依次输入命令:SocketTest.exe /install和sc start AutoWorkSrv,这时程序已运行,并可以在控制面板的计算机管理中看到如下界面:
六、结束语
以上内容整理匆忙,难免有不当之处,请批评指正。需要源码的可以和我联系。
我的邮箱:459238972@qq.com
相关文章推荐
- MooBox 基于Mootools的对话框插件
- 基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
- C#实现在前端网页弹出警告对话框(alert)的方法
- Android开发必知 九种对话框的实现方法
- Android列表对话框用法实例分析
- VC++ 中ListCtrl经验总结
- Visual C++中MFC消息的分类
- VC++实现程序开机启动运行的方法
- C#使用Word中的内置对话框实例
- VC++中HTControl控件类的CHTSlider控制杆控件类简介
- MFC中Radio Button的用法详解
- MFC对话框中添加状态栏的方法
- MFC创建右键弹出菜单的方法
- MFC中动态创建控件以及事件响应实现方法
- VC++中HTControl控制类使用之CHTDlgBase对话框基类实例
- C++ 关于MFC多线程编程的注意事项
- MFC程序对文件的处理方法
- MFC自定义消息的实现方法
- Vc++ 控件List Control用法总结
- windows Socket 通信模型