创建了service 程序后,关机重启动后服务已经启动,现在问题是不知道如何关掉程序(要的效果是:程序像普通程序一样关掉,但是在本地服务里面还存在,只是服务状态由已启动变成空白)
以下是我的想法但是不行:
 if FFromService then
  begin
    WinExec(PansiChar('net stop ' + GetServiceName), SW_Hide);  //停止服务
    close;
  end
  else
  begin
      Application.Terminate;
  end;请问该如何改?

解决方案 »

  1.   

    使用API
    var
      hSCManager, hService: SC_HANDLE; // handle of service control manager  ServiceStatus: SERVICE_STATUS;
    begin
      Result := False;
      // Open the service control manager
      hSCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
      if (hSCManager <> 0) then
      begin
        hService := OpenService(hSCManager, Servicename, SERVICE_ALL_ACCESS);
        if (hService <> 0) then
        begin
          Result := ControlService(
                        hService,
                        SERVICE_CONTROL_STOP,
                        ServiceStatus);
          CloseServiceHandle(hService);
        end;
        CloseServiceHandle(hSCManager);
      end;end;