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
[54514] Re:관리도구 -> 서비스 동작여부 체크
장성호 [nasilso] 1679 읽음    2008-09-08 14:53
현재 프로세서 목록을 구해보면 쉽게 알수 있을것 같은데  그게 잘 안되나봐요
아래 샘플을 참조하세요

첫번째는 프로세서 목록을 구해오는 것이구요
두번째는 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:관리도구 -> 서비스 동작여부 체크 장성호 1679 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.