WEB开发网
开发学院软件开发VC 用VC++建立Service服务应用程序 阅读

用VC++建立Service服务应用程序

 2007-03-17 21:59:46 来源:WEB开发网   
核心提示: void WINAPI ServiceMain(){// Register the control request handlerstatus.dwCurrentState = SERVICE_START_PENDING;status.dwControlsAccepted = SERVIC
void WINAPI ServiceMain()
{
  // Register the control request handler
  status.dwCurrentState = SERVICE_START_PENDING;
  status.dwControlsAccepted = SERVICE_ACCEPT_STOP;//这个要使用,否则你不能控制
  //注册服务控制
  hServiceStatus = RegisterServiceCtrlHandler(szServiceName, ServiceStrl);
  if (hServiceStatus == NULL)
  {
    LogEvent(_T("Handler not installed"));
    return;
  }
  SetServiceStatus(hServiceStatus, &status);
  status.dwWin32ExitCode = S_OK;
  status.dwCheckPoint = 0;
  status.dwWaitHint = 0;
  status.dwCurrentState = SERVICE_RUNNING;
  SetServiceStatus(hServiceStatus, &status);
  //模拟服务的运行,10后自动退出。应用时将主要任务放于此即可
  int i = 0;
  while (i < 10)
  {
      Sleep(1000);
      i++;
  }
  //
  status.dwCurrentState = SERVICE_STOPPED;
  SetServiceStatus(hServiceStatus, &status);
  LogEvent(_T("Service stopped"));
}
六、在主线程函数里注册控制函数和程序执行主体。这里主要是说明这就是程序的执行体。void WINAPI ServiceMain()
{
  …
  //模拟服务的运行,10后自动退出。应用时将主要任务放于此即可
  int i = 0;
  while (i < 10)
  {
      Sleep(1000);
      i++;
  }
  …
}
七、最后,要在main函数里注册添加安装、删除、注册主函数。int APIENTRY WinMain(HINSTANCE hInstance,
           HINSTANCE hPrevInstance,
           LPSTR   lpCmdLine,
           int    nCmdShow)
{
  Init();
  dwThreadID = ::GetCurrentThreadId();
  SERVICE_TABLE_ENTRY st[] =
  {
    { szServiceName, (LPSERVICE_MAIN_FUNCTION)ServiceMain },
    { NULL, NULL }
  };
  if (stricmp(lpCmdLine, "/install") == 0)
  {
    Install();
  }
  else if (stricmp(lpCmdLine, "/uninstall") == 0)
  {
    Uninstall();
  }
  else
  {
    if (!::StartServiceCtrlDispatcher(st))
    {
      LogEvent(_T("Register Service Main Function Error!"));
    }
  }
  return 0;
}
八、总结。其实做一个服务程序并不难,主要是懂得程序的执行体放于哪里?和注册程序的主函数和注册控制函数,如果这两个没有注册的话,你就程序就不知道如何去控制了。status.dwControlsAccepted = SERVICE_ACCEPT_STOP;这个也重要,如果你没有设置的话,那么服务就不会受你控制了。

上一页  1 2 

Tags:VC 建立 Service

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