::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2004-07-22 19:50:55, Hit : 4808, Vote : 1223
 http://www.howto.pe.kr
 윈도우즈 서비스 상태 구하기

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, WinSvc, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.dfm}

//-------------------------------------
// get service status
//
// 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 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 := DWORD(-1);

  // 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),
      // we want to
      // query service status
      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;

//-------------------------------------
// return TRUE if the specified
// service is running, defined by
// the status code SERVICE_RUNNING.
// return FALSE if the service
// is in any other state, including
// any pending states
//
function ServiceRunning(
  sMachine,
  sService : string ) : boolean;
begin
  Result := SERVICE_RUNNING =
    ServiceGetStatus(
      sMachine, sService );
end;

//-------------------------------------
// return TRUE if the specified
// service was stopped, defined by
// the status code SERVICE_STOPPED.
//
function ServiceStopped(
  sMachine,
  sService : string ) : boolean;
begin
  Result := SERVICE_STOPPED =
    ServiceGetStatus(
      sMachine, sService );
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // 서비스 시작됨(여기서는 DHCP 클라이언트로 테스트 했음)
  if( ServiceRunning(
    '',
    'Dhcp' ) )then
  begin
    ShowMessage('DHCP Client service on the local computer is running');
  end;

  // 서비스 중지됨
  if( ServiceStopped(
    '',
    'Dhcp' ) )then
  begin
    ShowMessage('DHCP Client on the local computer is in the stopped state');
  end;

{ // 다른 컴퓨터의 서비스 상태 구하기
  if( ServiceRunning(
    '\ComputerName',
    'Dhcp' ) )then
  begin
    ShowMessage("DHCP Client on \ComputerName is running take appropriate action here');
  end;
}  
end;

end.





811   [COM/OLE] IE 에 직접 입력한 URL 목록 구하기  김영대 2004/08/02 4334 1062
810   [COM/OLE] 특정 사이트의 form 을 강제 submit 하기  김영대 2004/08/02 5539 1376
809   [COM/OLE] 특정 사이트의 내용을 JPG 로 저장하기  김영대 2004/08/02 5078 1113
808   [COM/OLE] PDF ActiveX 사용하기  김영대 2004/08/02 5099 1188
807     [COM/OLE] [re] PDF ActiveX 사용하기  초보델피 2005/07/18 4905 1078
806   [COM/OLE] 특정 웹페이지의 모든 Link URL 구하기  김영대 2004/07/27 5608 1485
805   [일반/컴포넌트] TListBox 의 마우스 커서 아래의 아이템 구하기  김영대 2004/07/27 3742 1007
804   [시스템] Keyboard hook 을 사용한 OnKeyDown 구현  김영대 2004/07/27 5100 1303
803   [일반/컴포넌트] RichEdit 의 마우스 커서 아래의 글자 구하기  김영대 2004/07/27 4495 1055
802   [시스템] 실행중인 모든 프로세스의 Domain, User 구하기  김영대 2004/07/27 4840 1202
801   [일반/컴포넌트] 표준 TListBox 에 Radio 버튼 올리기  김영대 2004/07/27 4004 1091
800   [일반/컴포넌트] TTrewView, TListView 를 이미지로 저장하기  김영대 2004/07/26 4112 907
799   [일반/컴포넌트] TProgressbar 의 색상 바꾸기  김영대 2004/07/26 4441 1183
798   [네트웍/인터넷] 네트워크 드라이브 연결 화면 띄우기  김영대 2004/07/26 5809 1543
797   [시스템] 로컬 가상 드라이버(substitution device) 만들고 제거하기  김영대 2004/07/25 5458 1259
796   [일반/컴포넌트] 모서리가 둥근(rounded ends) TMemo 만들기  김영대 2004/07/25 4347 1128
795   [윈도우즈 API] 폼에 애니메이션 효과 주기  김영대 2004/07/25 4421 1185
794   [일반/컴포넌트] TList 를 이용한 stack 구조 구현  김영대 2004/07/25 4080 1037
793   [COM/OLE] 윈도우즈 "모든 창을 최소화"  김영대 2004/07/25 6071 1635
792   [COM/OLE] 윈도우즈 "시스템 종료" 화면  김영대 2004/07/25 4456 1258
791   [COM/OLE] 윈도우즈 "검색: 파일 또는 폴더" 화면  김영대 2004/07/25 4815 1345
790   [COM/OLE] 윈도우즈 "날짜/시간 등록 정보" 화면  김영대 2004/07/25 6249 1597
789   [COM/OLE] 윈도우즈 "인터넷 등록 정보" 화면  김영대 2004/07/25 4093 1276
788   [COM/OLE] 윈도우즈 "작업 표시줄 및 시작 메뉴 등록 정보" 화면  김영대 2004/07/25 5873 1572
787   [윈도우즈 API] 현재 키보드 입력 언어 구하기  김영대 2004/07/24 4770 1288
786   [윈도우즈 API] 지원하는 키보드 입력 언어 구하고 변경하기  김영대 2004/07/24 4522 1215
785   [윈도우즈 API] 바로 직전에 active 되었던 윈도우와 콘트롤 구하기  김영대 2004/07/24 4462 1119
784   [시스템] 제어판의 모든 applet 정보 구하기  김영대 2004/07/24 4232 1086
783   [일반/컴포넌트] 윈도우즈"시작" 버튼위에 글씨 쓰기  김영대 2004/07/24 4039 1096
782   [윈도우즈 API] Taskbar 의 위치 추적하기  김영대 2004/07/24 3798 1020
781   [윈도우즈 API] Taskbar 의 특정 위치에 popup 메뉴 띄우기  김영대 2004/07/24 4400 1154
780   [윈도우즈 API] 내 프로그램의 화면을 가리는 프로그램 리스트  김영대 2004/07/24 4359 1158
779   [시스템] 내 프로그램의 실행 우선순의 바꾸기  김영대 2004/07/24 4933 1344
778   [시스템] 마우스 아래의 윈도우 핸들 구하기  김영대 2004/07/24 6344 1367
777   [시스템] 윈도우즈 시스템의 스크롤바 두께 바꾸기  김영대 2004/07/24 5179 1232
776   [시스템] 윈도우즈 서비스 시작/중지 하기  김영대 2004/07/22 5807 1485
  [시스템] 윈도우즈 서비스 상태 구하기  김영대 2004/07/22 4808 1223
774   [시스템] 윈도우즈 서비스 목록 구하기  김영대 2004/07/22 4341 1175
773   [네트웍/인터넷] Winsock WriteFile and Overlapped IO  김영대 2003/11/18 5200 1173
772   [네트웍/인터넷] IOCP(I/O Completion Port) class  김영대 2003/11/18 10416 798

[1][2][3][4] 5 [6][7][8][9][10]..[25] [다음 10개]
 

Copyright 1999-2019 Zeroboard / skin by zero