아래는 Windows Printer Spooler ( spooler ) 서비스 시작 중지 예제 입니다.
if (bResult == TRUE) {
StopSpooler();
Sleep(2000);
StartSpooler();
}
BOOL StopSpooler() {
SC_HANDLE schService;
SC_HANDLE schSCManager;
// Machine NULL=local , database NULL= default
schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
if (!schSCManager) {
Log(L"%s OpenSCMManager 함수 호출이 실패 하였습니다. GetLastError=%d", __FUNCTIONW__, GetLastError());
return FALSE;
}
schService = OpenService(schSCManager, L"spooler", SERVICE_STOP | SERVICE_QUERY_STATUS);
BOOL bRet = FALSE;
if (schService) {
SERVICE_STATUS ssStatus;
if (ControlService(schService, SERVICE_CONTROL_STOP, &ssStatus)) {
Sleep(500);
while (QueryServiceStatus(schService, &ssStatus)) {
if (ssStatus.dwCurrentState == SERVICE_STOP_PENDING)
Sleep(1000);
else if (ssStatus.dwCurrentState == SERVICE_STOPPED) {
bRet = TRUE;
break;
}
else {
Log(L"%s 서비스 상태를 확인 할 수 없습니다. 상태코드=%d", __FUNCTIONW__, ssStatus.dwCurrentState);
break;
}
}
}
else
Log(L"%s ControlService 함수 호출이 실패 하였습니다.. GetLastError=%d", __FUNCTIONW__, GetLastError());
CloseServiceHandle(schService);
}
else
Log(L"%s OpenService 함수 호출이 실패 하였습니다.. GetLastError=%d", __FUNCTIONW__, GetLastError());
CloseServiceHandle(schSCManager);
return bRet;
}
BOOL StartSpooler() {
SC_HANDLE schService;
SC_HANDLE schSCManager;
// Machine NULL=local , database NULL= default
schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
if (!schSCManager) {
Log(L"%s OpenSCMManager 함수 호출이 실패 하였습니다. GetLastError=%d", __FUNCTIONW__, GetLastError());
return FALSE;
}
schService = OpenService(schSCManager, L"spooler", SERVICE_START | SERVICE_QUERY_STATUS);
if (schService) {
SERVICE_STATUS ssStatus;
if (StartService(schService , 0 , NULL) ) {
Sleep(500);
while (QueryServiceStatus(schService, &ssStatus)) {
if (ssStatus.dwCurrentState == SERVICE_RUNNING)
break;
else if (ssStatus.dwCurrentState == SERVICE_START_PENDING) {
Sleep(1000);
break;
}
else {
Log(L"%s 서비스 상태를 확인 할 수 없습니다. 상태코드=%d", __FUNCTIONW__, ssStatus.dwCurrentState);
break;
}
}
}
else
Log(L"%s ControlService 함수 호출이 실패 하였습니다.. GetLastError=%d", __FUNCTIONW__, GetLastError());
CloseServiceHandle(schService);
}
else
Log(L"%s OpenService 함수 호출이 실패 하였습니다.. GetLastError=%d", __FUNCTIONW__, GetLastError());
CloseServiceHandle(schSCManager);
return TRUE;
}
'C++ > MFC' 카테고리의 다른 글
[MFC Console] HwpAutomation을 이용한 Print 진행 예제 입니다. (1) | 2024.10.20 |
---|---|
[MFC] PRINTER_INFO_4를 이용한 프린터 설치 여부 체크 진행 예제 (0) | 2024.06.28 |
RegOpenKeyEx 32bit 응용프로그램에서 64bit Registry 접근 예제 (0) | 2023.06.22 |
[MFC] WAS서버에 POST 파라미터 전송 시에 한글 깨짐으로 인하여 URLEncode 처리 구현 테스트 진행 (0) | 2023.03.02 |
SHGetKnownFolderPath 함수 사용시에 바이러스로 인식되는 현상 (0) | 2022.10.26 |