장성호 님이 쓰신 글 :
: 현재 프로세서 목록을 구해보면 쉽게 알수 있을것 같은데 그게 잘 안되나봐요
: 아래 샘플을 참조하세요
:
: 첫번째는 프로세서 목록을 구해오는 것이구요
: 두번째는 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란 프로그램이 먼저 동작이 되어있어야 하거든요
: :
: : 그러다 보니 가끔씩 이 부분 때문에 에러가 나는 경우가 있더군요
: :
: : 혹시 이 부분을 체크 할수 있는 방법이 있을까요..ㅜㅜ
요즘 잦은 외근으로 이제 답변을 확인했습니다 ㅠㅠ
도움이 많이 될 것같네요. 고맙습니다 꾸벅,,
|