zoukankan      html  css  js  c++  java
  • 用delphi如何实现启动停止windows服务

    function StartService(AServName: string): Boolean; //use WinSvc
    var
    SCManager, hService: SC_HANDLE;
    lpServiceArgVectors: PChar;
    begin
    SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
    Result := SCManager <> 0;
    if Result then
    try
    hService := OpenService(SCManager, PChar(AServName), SERVICE_ALL_ACCESS);
    Result := hService <> 0;
    if (hService = 0) and (GetLastError = ERROR_SERVICE_DOES_NOT_EXIST) then
    Exception.Create('The specified service does not exist');
    if hService <> 0 then
    try
    lpServiceArgVectors := nil;
    Result := WinSvc.StartService(hService, 0, PChar(lpServiceArgVectors));
    if not Result and (GetLastError = ERROR_SERVICE_ALREADY_RUNNING) then
    Result := True;
    finally
    CloseServiceHandle(hService);
    end;
    finally
    CloseServiceHandle(SCManager);
    end;
    end;

    //如果要轉載本文請注明出處,免的出現版權紛爭,我不喜歡看到那種轉載了我的作品卻不注明出處的人 Seven{See7di#Gmail.com}
    function StopService(AServName: string): Boolean;
    var
    SCManager, hService: SC_HANDLE;
    SvcStatus: TServiceStatus;
    begin
    SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
    Result := SCManager <> 0;
    if Result then
    try
    hService := OpenService(SCManager, PChar(AServName), SERVICE_ALL_ACCESS);
    Result := hService <> 0;
    if Result then
    try //停止并卸载服务;
    Result := ControlService(hService, SERVICE_CONTROL_STOP, SvcStatus);
    //删除服务,这一句可以不要;
    // DeleteService(hService);
    finally
    CloseServiceHandle(hService);
    end;
    finally
    CloseServiceHandle(SCManager);
    end;
    end;


  • 相关阅读:
    DoTween插件的使用
    Unity3D协程的简单使用
    排序和双指针,减小时间复杂度
    Unity3D自定义菜单组件
    滑动窗口思路分析
    Unity3D中的序列化特性和DLL特性
    求数组的交集,以及贪心算法的使用
    随笔开始啦
    实例26 循环体的过滤器
    实例25 终止循环体
  • 原文地址:https://www.cnblogs.com/see7di/p/2239923.html
Copyright © 2011-2022 走看看