Windows服务之启动、停止、暂停、继续

2014-11-23 23:55:14 · 作者: · 浏览: 12

SC_HANDLE scm,sHandle;

SERVICE_STATUS ServiceStatus;

scm=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);

if (scm!=NULL)

{

//启动service

sHandle=OpenService(scm, "GwbnService",SERVICE_START);

if(sHandle!=NULL)

{

StartService(sHandle,0,NULL))//开始Service

}

//停止Service

sHandle=OpenService(scm, "GwbnService",SERVICE_STOP|SERVICE_QUERY_STATUS);

if(sHandle!=NULL)

QueryServiceStatus(sHandle,&ServiceStatus);

if(ServiceStatus.dwCurrentState == SERVICE_RUNNING || ServiceStatus.dwCurrentState == SERVICE_PAUSED)

{

ControlService(sHandle,SERVICE_CONTROL_STOP,&ServiceStatus);

}

//暂停Service

sHandle=OpenService(scm, "GwbnService",SERVICE_PAUSE_CONTINUE|SERVICE_QUERY_STATUS);

if(sHandle!=NULL)

QueryServiceStatus(sHandle,&ServiceStatus);

if(ServiceStatus.dwCurrentState == SERVICE_RUNNING)

{

ControlService(sHandle,SERVICE_CONTROL_PAUSE,&ServiceStatus);

}

//继续Service

sHandle=OpenService(scm, "GwbnService",SERVICE_PAUSE_CONTINUE|SERVICE_QUERY_STATUS);

if(sHandle!=NULL)

QueryServiceStatus(sHandle,&ServiceStatus);

if(ServiceStatus.dwCurrentState == SERVICE_PAUSED)

{

ControlService(sHandle,SERVICE_CONTROL_CONTINUE,&ServiceStatus);

}

}

注意:服务有服务名称和显示名称之分,这里需要的是服务名称

摘自:Awey_001的专栏