ATL轻松简单创建NT服务

原创 2006年06月26日 13:56:00

步骤:

1.  打开VS,创建一个ATL项目,名为MService

2.  ATL向导“应用程序设计”选项,去掉属性化,选择“服务(EXE)”选项,点击完成。

这时,我们就得到了一个什么也不做的NT服务,这时我们应该重写CMServiceModule 从模板CAtlServiceModuleT继承下的几个函数,来打造我们自己的NT服务。

3.  重写CMServiceModule继承下来的2个函数:

class CMServiceModule : public CAtlServiceModuleT< CMServiceModule, IDS_SERVICENAME >

{

public :

     DECLARE_LIBID(LIBID_MServiceLib)

     DECLARE_REGISTRY_APPID_RESOURCEID(IDR_MSERVICE, "{FA2DF597-14BD-44E1-820E-E5CF394CA58E}")

     HRESULT InitializeSecurity() throw()

     {

         // TODO : 调用 CoInitializeSecurity 并为服务提供适当的

         // 安全设置

         // 建议 - PKT 级别的身份验证、

         // RPC_C_IMP_LEVEL_IDENTIFY 的模拟级别

         // 以及适当的非空安全说明符。

 

         return S_OK;

     }

 

     HRESULT PreMessageLoop(int nShowCmd) throw();

     HRESULT PostMessageLoop() throw();

};

HRESULT CMServiceModule::PreMessageLoop(int nShowCmd) throw()

{

     HRESULT hr = __super::PreMessageLoop(nShowCmd);

 

     if (SUCCEEDED(hr) && !m_bDelayShutdown)

         hr = CoResumeClassObjects();

 

     if (SUCCEEDED(hr))

     {

         // Add any custom code to initialize your service

 

     }

 

     return hr;

}

 

HRESULT  CMServiceModule::PostMessageLoop() throw()

{

     HRESULT hr = __super::PostMessageLoop();

 

     if (SUCCEEDED(hr))

     {

         // Add any custom code to uninitialize your service

 

     }

 

     return hr;

}

   

4.  这时你可以在PreMessageLoop注释的部分可以初始化你的数据,并执行你的代码,你也可以开一个线程做任何你想做的事情。而在PostMessageLoop注释的部分做一些清理和回收的工作。

vs2010 ATL创建windows服务程序

1,new project -> 选择 ATL Project,  设置工程名,如:PureSsl 2,在向导的“Application Setting”页,“Application Type”项选...
  • lazyclough
  • lazyclough
  • 2012年10月04日 17:30
  • 9968

VS2010 ATL服务程序编写全攻略(一) - 建立ATL服务

网上有很多关于编写ATL服务程序的代码和文章,但多数仍使用Visual C++ 6.0的ATL服务程序框架。对于XP系统,Visual C++ 6.0提供的框架能够正常工作,但对于Vista、Wind...
  • sonsie007
  • sonsie007
  • 2013年04月22日 15:06
  • 7380

ATL--创建简单的ATL之dll工程,添加“ATL简单对象”类的参数说明

添加“ATL简单对象”类一共分三个步骤 1.添加名称 2.文件类型选项 3.参数选项 添加接口 1.鼠标右键工程添加类 2.类型选择“ATL简单对象” 3.就在简...
  • sakawa_x
  • sakawa_x
  • 2017年07月21日 16:26
  • 307

ATL创建COM服务时必须注意的问题

1:用ATL向导创建COM组件时,必须指定ProgID 2:ATL向导生成的RGS有BUG,必须手工添加一句 val AppID = s '%APPID%'像下面这样 HKCR { ProgID...
  • yjz1409276
  • yjz1409276
  • 2015年01月31日 02:11
  • 951

WINDOWS NT服务的创建方法

以为以VC6.0开发工具为例,  .NET C++是一样的。可以使用控制台, WIN32,  ATL (.NET 的ATL用的模板,而VC6.0不是)。程序框架主要由两部分板成, 一个服务主函数(Se...
  • humanNew
  • humanNew
  • 2007年04月02日 17:32
  • 862

VS2013编写ATL简单对象在PHP中使用

截图1 截图2 截图3 截图4 截图5 截图6 截图7 截图8 截图9 截图10
  • sjg20010414
  • sjg20010414
  • 2014年02月28日 16:25
  • 2223

如何用ATL编写Windows服务

有时候,我们需要自己写的程序在没有用户登陆的情况下,只要Windows系统启动就运行,那我们可以把我们的程序写成一个Windows服务。   服务是能够为各种用户(包括本地用户和远程用户)所用的,拥...
  • lsrwan
  • lsrwan
  • 2014年11月15日 22:17
  • 380

windows NT 服务程序的创建,删除,启动,停止

/* 函数名: RtStatrtService 描述:启动一个NT服务,服务名字由参数传入 */ BOOL RtStatrtService(LPCTSTR lpMachineName,LPCT...
  • hurryboylqs
  • hurryboylqs
  • 2010年11月21日 14:12
  • 3660

用 VC 2008 编写 Windows Service(系统服务) atl 编写系统服务

http://hi.baidu.com/lewutian/item/9019396a05d517166995e6a5 http://hi.baidu.com/cntrump/item/2bf6b43...
  • smallnew198705
  • smallnew198705
  • 2014年03月30日 16:27
  • 1514

VC 2010+ATL:ATL服务程序无法启动

其他: 无COM接口的ATL服务程序启动失败的解决办法: http://hi.baidu.com/hstrong/item/11dc5c98e4d58fdf1b49dfab windows服务...
  • smallnew198705
  • smallnew198705
  • 2014年03月30日 20:29
  • 1182
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ATL轻松简单创建NT服务
举报原因:
原因补充:

(最多只允许输入30个字)