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; 
  • 相关阅读:
    设计模式
    《黑马程序员》类和对象(Objective
    《黑马程序员》认识OC的第一个程序(Objective-c)
    《黑马程序员》 字符串 (C语言)
    《黑马程序员》 关键字---typedef (C语言)
    《黑马程序员》预处理指令(宏定义、条件编译、文件包含)(C语言)
    《黑马程序员》 结构体struct (C语言)
    《黑马程序员》局部变量与全局变量 (C语言)
    《黑马程序员》 ★指针练习★ (C语言)
    《黑马程序验》数组与函数(C语言)
  • 原文地址:https://www.cnblogs.com/blogpro/p/11345364.html
Copyright © 2011-2022 走看看