WEB开发网
开发学院软件开发VC 用 C++ 创建简单的 Win32 服务程序 阅读

用 C++ 创建简单的 Win32 服务程序

 2006-07-20 11:41:12 来源:WEB开发网   
核心提示: class CNTService{[...]// 静态数据static CNTService* m_pThis; // nasty hack to get object ptr[...]};下面是初始化 m_pThis 指针的方法:CNTService::CNTService(const
class CNTService
{
  [...]
  // 静态数据
  static CNTService* m_pThis; // nasty hack to get object ptr
  [...]
};

下面是初始化 m_pThis 指针的方法:

CNTService::CNTService(const char* szServiceName)
{
  // Copy the address of the current object so we can access it from
  // the static member callback functions.
  // WARNING: This limits the application to only one CNTService object.
  m_pThis = this;
  [...]
}

CNTService 类

当我创建 C++ 对象封装 Windows 函数时,我尝试为我封装的每个 Windows API 除了创建成员函数外,还做一些别的工作,我尝试让对象更容易使用,降低实现特定项目所需的代码行数。因此我的对象是基于“我想让这个对象做什么?”而不是“Windows 用这些 APIs 做什么?”

CNTService 类包含一些用来解析命令行的成员函数,为了处理服务的安装和拆卸以及事件日志的记录,你得在派生类中重写一些虚拟函数来处理服务控制管理器的请求。下面我们将通过本文的例子服务实现来研究这些函数的使用。

如果你想创建尽可能简单的服务,只需要重写 CNTService::Run 即可,它是你编写代码实现具体服务任务的地方。你还需要实现 main 函数。如果服务需要实现一些初始化。如从注册表读取数据,还需重写 CNTService::OnInit。如果你要向服务发送命令消息 ,那么可以在服务中使用系统函数 ControlService,重写 CNTService::OnUserControl 来处理请求。

在例子应用程序中使用 CNTService

NTService 在 CMyService 类中实现了它的大多数功能,CMyService 由 CNTService 派生。 MyService.h 头文件如下:

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:创建 简单 Win

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接