zoukankan      html  css  js  c++  java
  • 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; 
  • 相关阅读:
    C# Dapper 2.0源码
    C#实现隐藏手机号、邮箱、姓名等敏感信息扩展方法
    C# 自定义弹窗提醒
    用sqlyog 连 mysql 8 时,报错:plugin caching_sha2_password could not be loaded
    汇总最全的C#.NET(数据库/.net/其它)面试题及参考答案
    安装sql2008r2后,数据库引擎为空是为什么?
    SQL Server 2008找不到SQL Server配置管理器的问题
    PrintDialog.ShowDialog不能显示打印对话框
    PrintDialog控件
    PrintPreviewControl控件
  • 原文地址:https://www.cnblogs.com/blogpro/p/11345364.html
Copyright © 2011-2022 走看看