用VC++建立Service服务应用程序(2)
 //创建服务
 
 SC_HANDLE hService = ::CreateService(
  hSCM, szServiceName, szServiceName,
  SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS,
  SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL,
  szFilePath, NULL, NULL, _T(""), NULL, NULL);
 ::CloseServiceHandle(hService);
 ::CloseServiceHandle(hSCM);
}
BOOL Uninstall();
{
 //这里列出主要的两个函数,其它的可以在代码里找。
 //打开服务控制管理器
OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
//打开服务
OpenService(hSCM, szServiceName, SERVICE_STOP | DELETE);
//停止服务
ControlService(hService, SERVICE_CONTROL_STOP, &status);
//删除服务
DeleteService(hService);
 …
} 
五、添加服务主线程函数和控制函数
这里调用RegisterServiceCtrlHandler来注册服务的控制函数,这里要设置status.dwControlsAccepted为SERVICE_ACCEPT_STOP,否则你不能控制这个服务的状态。
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);
- 上一篇:VC中对鼠标的确定及简单控制
 - 下一篇:VC实现自动监测光驱状态的改变
 

