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

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

 2006-07-20 11:41:12 来源:WEB开发网   
核心提示: // myservice.h#include "ntservice.h"class CMyService : public CNTService{public:CMyService();virtual BOOL OnInit();virtual void Run();v
// myservice.h
#include "ntservice.h"
class CMyService : public CNTService
{
public:
  CMyService();
  virtual BOOL OnInit();
  virtual void Run();
  virtual BOOL OnUserControl(DWORD dwOpcode);
  void SaveStatus();
  // Control parameters
  int m_iStartParam;
  int m_iIncParam;
  // Current state
  int m_iState;
};

正像你所看到的,CMyService 改写了 CNTService 的 OnInit、Run 和 OnUserControl。它还有一个函数叫 SaveStatus,这个函数被用于将数据写入注册表,那些成员变量用来保存当前状态。例子服务每隔一定的时间对一个整型变量进行增量处理。开始值和增量值都存在注册表的参数中。这样做并没有别的意图。只是为了简单示范。下面我们看看这个服务是如何实现的。

实现 main 函数

有了从 CNTService 派生的 CMyService,实现 main 函数很简单,请看 NTServApp.cpp 文件:

int main(int argc, char* argv[])
{
  // 创建服务对象
  CMyService MyService;
  
  // 解析标准参数 (安装, 卸载, 版本等.)
  if (!MyService.ParseStandardArgs(argc, argv)) {
    // 未发现任何标准参数,所以启动服务,
    // 取消下面 DebugBreak 代码行的注释,
    // 当服务启动后进入调试器,
    //DebugBreak();
    MyService.StartService();
  }
  // 到这里,服务已经停止
  return MyService.m_Status.dwWin32ExitCode;
}    

这里代码不多,但执行后却发生了很多事情,让我们一步一步来看。首先,我们创建一个 MyService 类的实例。构造函数设置初始化状态和服务名字(MyService.cpp):

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

Tags:创建 简单 Win

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