C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[54553] Re:Re:관리도구 -> 서비스 동작여부 체크
한정우 [] 1448 읽음    2008-09-11 18:30
장성호 님이 쓰신 글 :
: 현재 프로세서 목록을 구해보면 쉽게 알수 있을것 같은데  그게 잘 안되나봐요
: 아래 샘플을 참조하세요
:
: 첫번째는 프로세서 목록을 구해오는 것이구요
: 두번째는 Windows Service에서 특정 Service가 실행되어있는지 상태를 확인하는 샘플입니다.
:
:
: #include 
: 
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:     Memo1->Lines->Clear();
:     HWND hsnapshot = NULL;
:     PROCESSENTRY32 processinfo;
:     processinfo.dwSize = sizeof(processinfo);
:     hsnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
:     if (hsnapshot == NULL)return;
:     bool status = Process32First(hsnapshot, &processinfo);
:     while(status)
:     {
:         Memo1->Lines->Add(processinfo.szExeFile);
:         status = Process32Next(hsnapshot, &processinfo);
:     }
:     CloseHandle(hsnapshot);
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button2Click(TObject *Sender)
: {
:     static SERVICE_STATUS   g_sStatus;
: 
:     String sServiceName="MySQL";
:     SC_HANDLE schService = NULL;
:     SC_HANDLE schSCManager = NULL;
:     TCHAR szError[MAX_PATH] = {0, };
:     BOOL bRet = FALSE;
: 
:     schSCManager = ::OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS );
:     if ( NULL != schSCManager )
:     {
:         schService = ::OpenService(schSCManager,sServiceName.c_str(),SERVICE_ALL_ACCESS);
: 
:         if (NULL != schService)
:         {
: //서비스 상태
: //#define SERVICE_STOPPED                        0x00000001
: //#define SERVICE_START_PENDING                  0x00000002
: //#define SERVICE_STOP_PENDING                   0x00000003
: //#define SERVICE_RUNNING                        0x00000004
: //#define SERVICE_CONTINUE_PENDING               0x00000005
: //#define SERVICE_PAUSE_PENDING                  0x00000006
: //#define SERVICE_PAUSED                         0x00000007
: 
: //서비스 제어
: //#define SERVICE_CONTROL_STOP                   0x00000001
: //#define SERVICE_CONTROL_PAUSE                  0x00000002
: //#define SERVICE_CONTROL_CONTINUE               0x00000003
: //#define SERVICE_CONTROL_INTERROGATE            0x00000004
: //#define SERVICE_CONTROL_SHUTDOWN               0x00000005
: //#define SERVICE_CONTROL_PARAMCHANGE            0x00000006
: //#define SERVICE_CONTROL_NETBINDADD             0x00000007
: //#define SERVICE_CONTROL_NETBINDREMOVE          0x00000008
: //#define SERVICE_CONTROL_NETBINDENABLE          0x00000009
: //#define SERVICE_CONTROL_NETBINDDISABLE         0x0000000A
: //#define SERVICE_CONTROL_DEVICEEVENT            0x0000000B
: //#define SERVICE_CONTROL_HARDWAREPROFILECHANGE  0x0000000C
: //#define SERVICE_CONTROL_POWEREVENT             0x0000000D
: //#define SERVICE_CONTROL_SESSIONCHANGE          0x0000000E
: 
:            ::QueryServiceStatus( schService, &g_sStatus);
:            if( g_sStatus.dwCurrentState == SERVICE_RUNNING )
:            {
:                ShowMessage(sServiceName+" Running ");
:                //ControlService(schService,SERVICE_CONTROL_STOP, &g_sStatus); //Service를 멈춤
: 
:            }
:            else if (g_sStatus.dwCurrentState ==SERVICE_STOPPED)
:            {
:                 ShowMessage(sServiceName+" Stoped ");
:            }
:            else if (g_sStatus.dwCurrentState ==SERVICE_PAUSED)
:            {
:                 ShowMessage(sServiceName+" Paused ");
:                // ControlService(schSCManager,SERVICE_CONTROL_CONTINUE,&g_sStatus);
: //                ShowMessage(sServiceName+" Resume ");
: 
:            }
: 
:            ::CloseServiceHandle(schService);
:         }
:         else
:         {
:             ShowMessage(sServiceName+" OpenService failed \n");
: 
:         }
: 
:         ::CloseServiceHandle(schSCManager);
:     }
: 
: }
: //---------------------------------------------------------------------------
: 
: 

:
:
: 그럼...
:
:
: 빌더 초보 님이 쓰신 글 :
: : 입문한지 얼마안되는 알짜 초보 입니다.. ^^
: :
: : 다름이 아니고 제가 프로그램을 돌리기 전에 firebird란 프로그램이 먼저 동작이 되어있어야 하거든요
: :
: : 그러다 보니 가끔씩 이 부분 때문에 에러가 나는 경우가 있더군요
: :
: : 혹시 이 부분을 체크 할수 있는 방법이 있을까요..ㅜㅜ

요즘 잦은 외근으로 이제 답변을 확인했습니다 ㅠㅠ

도움이 많이 될 것같네요. 고맙습니다 꾸벅,,

+ -

관련 글 리스트
54506 관리도구 -> 서비스 동작여부 체크 빌더 초보 1160 2008/09/08
54514     Re:관리도구 -> 서비스 동작여부 체크 장성호 1680 2008/09/08
54553         Re:Re:관리도구 -> 서비스 동작여부 체크 한정우 1448 2008/09/11
54512     Re:관리도구 -> 서비스 동작여부 체크 권창구.태원아빠 1075 2008/09/08
54554         Re:Re:관리도구 -> 서비스 동작여부 체크 한정우 1062 2008/09/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.