用VC++建立Service服务应用程序(3)
//模拟服务的运行,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;这个也重要,如果你没有设置的话,那么服务就不会受你控制了。
需要源码的朋友可以联系我(niyingny@hotmail.com)
- 上一篇:VC中对鼠标的确定及简单控制
 - 下一篇:VC实现自动监测光驱状态的改变
 

