打印本文 打印本文 关闭窗口 关闭窗口
windwos 2000及NT 服务注册的具体实现
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2291  更新时间:2009/4/23 18:38:21  文章录入:mintao  责任编辑:mintao
      1:  //启动服务器
            Begin
              //ControlService(rHandle,SERVICE_CONTROL_START,rec_status);
              StartService(rHandle,0,servicearg);
              i:=0;
              While i<30 Do
              Begin
                QueryServiceStatus(RHandle,Rec_status);
                if rec_status.dwCurrentState =SERVICE_RUNNING then
                Begin
                  result :=True;
                  CloseServiceHandle(RHandle);
                  Break;
                End;
                sleep(1000);
                i:=i+1;
              End;
            End;
          2:     //暂停服务进程
            Begin
              ControlService(rHandle,SERVICE_CONTROL_PAUSE,rec_status);
              i:=0;
              While i<30 Do
              Begin
                 QueryServiceStatus(RHandle,Rec_status);
                 if rec_status.dwCurrentState =SERVICE_PAUSED then
                 Begin
                   result :=true;
                   CloseServiceHandle(RHandle);
                   Break;
                 End;
                 Sleep(1000);
                 i:=i+1;
              End;
            End;
          3:    //唤醒服务进程
            Begin
              ControlService(rHandle,SERVICE_CONTROL_CONTINUE,rec_status);
              i:=0;
              While i<30 do
              Begin
                QueryServiceStatus(RHandle,Rec_status);
                if rec_status.dwCurrentState =SERVICE_RUNNING then
                Begin
                  result :=True;
                  CloseServiceHandle(RHandle);
                  Break;
                End;
                Sleep(1000);
                i:=i+1;
              End;
            End;
          4:   //停止服务进程
            begin
              ControlService(rHandle,SERVICE_CONTROL_STOP,rec_status);
              i:=0;
              While i<30 Do
              Begin
                QueryServiceStatus(RHandle,Rec_status);
                if rec_status.dwCurrentState =SERVICE_STOPPED then
                Begin
                  result :=True;
                  CloseServiceHandle(RHandle);
                  Break;
                End;
                Sleep(1000);
                i:=i+1;
              End;
            End;
          5:   //关闭服务程序 SERVICE_CONTROL_SHUTDOWN
            Begin
              rec_status.dwCurrentState :=SERVICE_RUNNING;

              ControlService(rHandle,SERVICE_CONTROL_STOP,rec_status);
              i:=0;
              While i<30 Do
              Begin
                QueryServiceStatus(RHandle,Rec_status);
                if rec_status.dwCurrentState =SERVICE_STOPPED then
                Begin
                  result :=True;
                  CloseServiceHandle(RHandle);
                  Break;
                End;
                Sleep(1000);
                i:=i+1;
              End;
            End;
        end;
        Result :=true;
        {关闭句柄}
        if rHandle <> 0  then
          CloseServiceHandle(RHandle);
      End;
    End;
  Except
  End;

end;

function TService.IsServiceStart(ServiceName: String): Boolean;
Var
  RHandle:Integer;
  rc :Boolean;
  Rec_status :TServiceStatus;
begin
  Try
    OpenScmHandle();
    Result :=False;
    If

上一页  [1] [2] [3]  下一页

打印本文 打印本文 关闭窗口 关闭窗口