• 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; 
  • 相关阅读:
    转-容器技术发展现状
    flume自定义sink
    查看jar包里面是否看有一个文件
    flume source spooldir
    flume sink kafka
    mac配置mysql
    Mac 下卸载mysql
    mysql定时任务
    mysql 触发器和自定义函数
    mysql自定义函数 Unknown system variable 'result'
  • 原文地址:https://www.cnblogs.com/blogpro/p/11345364.html
Copyright © 2020-2023  润新知