Delphi 判断某个系统服务是否存在及相关状态

记得use WinSvc; 

//------------------------------------- 
// 获取某个系统服务的当前状态 
// 
// return status code if successful 
// -1 if not 
// 
// return codes: 
// SERVICE_STOPPED 
// SERVICE_RUNNING 
// SERVICE_PAUSED 
// 
// following return codes are used to indicate that the service is in the 
// middle of getting to one of the above states: 
// SERVICE_START_PENDING 
// SERVICE_STOP_PENDING 
// SERVICE_CONTINUE_PENDING 
// SERVICE_PAUSE_PENDING 
// 
// sMachine: 
// machine name, ie: \SERVER 
// empty = local machine 
// 
//sService 
// service name, ie: Alerter 
// 
function TFormConfig.ServiceGetStatus(sMachine, sService: string ): DWord; 
var 
//service control 
//manager handle 
schm, 
//service handle 
schs: SC_Handle; 
//service status 
ss: TServiceStatus; 
//current service status 
dwStat : DWord; 
begin 
dwStat := 0; 
//connect to the service 
//control manager 
schm := OpenSCManager(PChar(sMachine), Nil, SC_MANAGER_CONNECT); 
//if successful... 
if(schm > 0)then 
begin 
//open a handle to 
//the specified service 
schs := OpenService(schm, PChar(sService), SERVICE_QUERY_STATUS); 
//if successful... 
if(schs > 0)then 
begin 
//retrieve the current status 
//of the specified service 
if(QueryServiceStatus(schs, ss))then 
begin 
dwStat := ss.dwCurrentState; 
end; 
//close service handle 
CloseServiceHandle(schs); 
end; 

// close service control 
// manager handle 
CloseServiceHandle(schm); 
end; 

Result := dwStat; 
end; 

{判断某服务是否安装,未安装返回true,已安装返回false} 
function TFormConfig.ServiceUninstalled(sMachine, sService : string ) : boolean; 
begin 
Result := 0 = ServiceGetStatus(sMachine, sService); 
end; 

{判断某服务是否启动,启动返回true,未启动返回false} 
function TFormConfig.ServiceRunning(sMachine, sService : string ) : boolean; 
begin 
Result := SERVICE_RUNNING = ServiceGetStatus(sMachine, sService ); 
end; 

{判断某服务是否停止,停止返回true,未停止返回false} 
function TFormConfig.ServiceStopped(sMachine, sService : string ) : boolean; 
begin 
Result := SERVICE_STOPPED = ServiceGetStatus(sMachine, sService ); 
end; 

猜你喜欢

转载自www.cnblogs.com/blogpro/p/11345364.html