已经写好的一个带图形界面的mfc程序 想把它同时做成服务程序 怎么办? 已经写好的一个带图形界面的mfc程序 想把它同时做成服务程序 怎么办?需要添加什么代码 没思路 请教! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 简单点的方法1,另外用向导创建一个服务程序,编译通过。2,将你的xxxdlg.cpp, xxxdlg.h(如果是dlg)包括其它相关资源加入此工程。3, 在Run()中增加一个线程,用这个线程启动你的dlg,而不要用其它方式,否则Run如果超时的话服务马上就退出了,无法成功运行的。4,可选的:可在程序中增加下次自动启动服务或关闭服务的代码等附加功能。示例如下:void CKMServerModule::Run(){ _AtlModule.dwThreadID = GetCurrentThreadId(); LogEvent(_T("Service started")); if (m_bService) SetServiceStatus(SERVICE_RUNNING); pThread = AfxBeginThread(Trigger, NULL); //这个就是启动dlg线程了 MSG msg; while (GetMessage(&msg, 0, 0, 0)) DispatchMessage(&msg);}UINT Trigger(LPVOID pParam){ CKMServerDlg dlg; //声明dlg dlg.Create(IDD_KMSERVER_DIALOG); dlg.ShowWindow(nCmdShow); dlg.RunModalLoop(); return 0;} 程序是已经写好的所以 不可以新建一个了用向导创建一个服务程序 这个还要clr支持吧? 你说的是atl向导建立的服务程序吧?那个CxxxModule的类可以单独提取出来给现成的mfc程序用吧? win7下的服务即使带界面也无法和当前登录的桌面进行交互,服务和当前用户在不同的session下。服务一般是不提倡带界面的,我还从没看见过有服务带界面的。服务带界面本身也是一种错误的编程思想,服务从定义的角色来看,本身就不应该带界面,只是提供功能接口,不提供操作界面。正确的思想是后台服务+前台界面的模式。需要有一个不带界面的后台服务和一个用于访问服务的前端界面exe。现有的软件,包括系统自带的软件,杀毒软件也好,都是这个模式。比如windows的磁盘管理,你虽然在界面上操作,其实是前台的exe和后台虚拟磁盘服务进行通信的结果。杀毒软件也是,用前台的exe和后台服务进行通信,即使你关闭了前端的操作界面,后台服务仍在进行。和服务通信,采用命名管道的居多,也有一些采用socket通信的 call stack有木有人能分析一下 一道简单面试题,求解!!! CEdit文本全选 有关主窗体切换显示的问题? 请问发送邮件的附件时是调用什么API读取文件的?100分 数组的Serialize小问题 CStatic为什么不处理WM_CREATE消息? float到底能保留几位小数? 怎么让一个CTreeCtrl控件不可操作,就是让各个事件都不可用,让它处于不可编辑的状态? CSpinButtonCtrl 基于SNMP协议监控GNS3软件上的路由器和交换机 MFC初学者,请教各位高手给点建议,MFC里面的代码问题
1,另外用向导创建一个服务程序,编译通过。
2,将你的xxxdlg.cpp, xxxdlg.h(如果是dlg)包括其它相关资源加入此工程。
3, 在Run()中增加一个线程,用这个线程启动你的dlg,而不要用其它方式,否则Run如果超时的话服务马上就退出了,无法成功运行的。
4,可选的:可在程序中增加下次自动启动服务或关闭服务的代码等附加功能。示例如下:
void CKMServerModule::Run()
{
_AtlModule.dwThreadID = GetCurrentThreadId();
LogEvent(_T("Service started"));
if (m_bService)
SetServiceStatus(SERVICE_RUNNING);
pThread = AfxBeginThread(Trigger, NULL); //这个就是启动dlg线程了 MSG msg;
while (GetMessage(&msg, 0, 0, 0))
DispatchMessage(&msg);
}UINT Trigger(LPVOID pParam)
{
CKMServerDlg dlg; //声明dlg
dlg.Create(IDD_KMSERVER_DIALOG);
dlg.ShowWindow(nCmdShow);
dlg.RunModalLoop();
return 0;
}
程序是已经写好的所以 不可以新建一个了
用向导创建一个服务程序 这个还要clr支持吧?
那个CxxxModule的类可以单独提取出来给现成的mfc程序用吧?
服务一般是不提倡带界面的,我还从没看见过有服务带界面的。服务带界面本身也是一种错误的编程思想,服务从定义的角色来看,本身就不应该带界面,只是提供功能接口,不提供操作界面。正确的思想是后台服务+前台界面的模式。需要有一个不带界面的后台服务和一个用于访问服务的前端界面exe。现有的软件,包括系统自带的软件,杀毒软件也好,都是这个模式。比如windows的磁盘管理,你虽然在界面上操作,其实是前台的exe和后台虚拟磁盘服务进行通信的结果。杀毒软件也是,用前台的exe和后台服务进行通信,即使你关闭了前端的操作界面,后台服务仍在进行。和服务通信,采用命名管道的居多,也有一些采用socket通信的