基于MFC编写Windows服务程序

近期由于项目需要,编写了一个基于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




  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值