MFC应用程序 变身成 windows服务程序
2016-11-09 11:20
204 查看
最近开发一个运行在winserver2008的服务程序,有简单配置界面,有socket服务端代码,有一些windows消息处理(比如WM_WTSSESSION_CHANGE 、WM_TIMER);
很简单的一个程序,也不需要什么特别的要求(跨平台什么的),所以直接用MFC写了,结果一用出问题了:
该2008服务器经常用来做RDP-remoteapp模式的服务器来用(比如IE,原因是因为网络限制,只有服务器能访问特定的IP,比如https://192.168.1.123),
在RDP-RemoteApp(IE)模式下,用administratro帐号登录,结束时会导致帐号注销,一注销,我的托盘程序就被杀死了。。。
就想如何不让它被杀死, 就想改成服务吧,一般的服务写过,主要是socket服务程序,而我这个程序已经写完了,代码不算少,全部重写为服务程序,效率太低了;
而且还必须要处理好几个windows消息, 倒腾了近1天,终于实现了,很简单从MFC 应用程序改成windows服务,特此记录一下!
windows服务相关的代码就不写了,网上一搜就很多,也很好,主要说MFC应用程序的改动.
在InitInstance函数中,把创建Dlg的代码都注释掉(暂时),换成服务开始函数(主要包括SERVICE_TABLE_ENTRY和StartServiceCtrlDispatcher),
在entrytable[0].lpServiceProc所指向的服务主函数中,最后结束的位置协商创建Dlg的代码(改成非模态,然后加上消息循环),如下:
CMyDlg dlg;
dlg.Create(IDD_MYDIALOG_DIALOG,NULL);
dlg.ShowWindow(SW_SHOW);
MSG msg;
whie(GetMessage(&msg, dlg.GetSafeHwnd(), 0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
对,重点就上边这几句话,就完成了(必须非模态,必须有消息循环)
希望对大家有帮助!
很简单的一个程序,也不需要什么特别的要求(跨平台什么的),所以直接用MFC写了,结果一用出问题了:
该2008服务器经常用来做RDP-remoteapp模式的服务器来用(比如IE,原因是因为网络限制,只有服务器能访问特定的IP,比如https://192.168.1.123),
在RDP-RemoteApp(IE)模式下,用administratro帐号登录,结束时会导致帐号注销,一注销,我的托盘程序就被杀死了。。。
就想如何不让它被杀死, 就想改成服务吧,一般的服务写过,主要是socket服务程序,而我这个程序已经写完了,代码不算少,全部重写为服务程序,效率太低了;
而且还必须要处理好几个windows消息, 倒腾了近1天,终于实现了,很简单从MFC 应用程序改成windows服务,特此记录一下!
windows服务相关的代码就不写了,网上一搜就很多,也很好,主要说MFC应用程序的改动.
在InitInstance函数中,把创建Dlg的代码都注释掉(暂时),换成服务开始函数(主要包括SERVICE_TABLE_ENTRY和StartServiceCtrlDispatcher),
在entrytable[0].lpServiceProc所指向的服务主函数中,最后结束的位置协商创建Dlg的代码(改成非模态,然后加上消息循环),如下:
CMyDlg dlg;
dlg.Create(IDD_MYDIALOG_DIALOG,NULL);
dlg.ShowWindow(SW_SHOW);
MSG msg;
whie(GetMessage(&msg, dlg.GetSafeHwnd(), 0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
对,重点就上边这几句话,就完成了(必须非模态,必须有消息循环)
希望对大家有帮助!
相关文章推荐
- 将基于MFC的对话框应用程序修改为服务程序---------
- 基于MFC编写Windows服务程序
- Tips: 如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?
- win32服务 mfc 结合 编写有图形界面的 Windows 服务程序
- 将基于MFC的对话框应用程序修改为服务程序
- 如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息
- 将基于MFC的对话框应用程序修改为服务程序
- 将基于MFC的对话框应用程序修改为服务程序
- 添加服务,用于定期执行某个程序或者应用程序(windows service)
- 将基于MFC的对话框应用程序修改为服务程序
- MFC Windows应用程序的基本运行机制与HelloWin程序详细解
- 将基于MFC的对话框应用程序修改为服务程序
- 基于MFC对话框的Windows服务程序
- 用Visual C#创建Windows服务程序 (转自赛迪网)
- C编写Windows服务程序的五个步骤
- 用C语言编写Windows服务程序的五个步骤
- 使Java程序在Windows上作为服务运行
- Windows服务程序的种类
- 用C语言编写windows服务程序
- Windows下编写系统服务程序的实例