2012-07-04 4 views
0

시작시 배치 파일을 실행할 Windows 서비스를 만들고 싶습니다. 나는 createservice 같은 API 년대 알고,하지만 내가 원하는 것은 내가 매개 변수 start 내 배치 파일을 호출 할 Start serviceService Control Manager에서 말할 때 내가 정지를 말할 때 나는 stop 매개 변수Windows 서비스 및 배치 파일 만들기

+2

? 'ShellExecute'를 호출하여 배치 파일을 실행하는 방법을 알고 있습니까? 서비스 시작에 응답하는 방법을 알고 있습니까? 서비스 작성 방법을 알고 있습니까? –

답변

1

때마다와 같은 배치 파일을 호출 할 당신은 어떤 윈도우 서비스 작업처럼/정지/일시 정지 서비스, 당신이 나 RegisterServiceCtrlHandler()를 통해 등록 서비스 메인 컨트롤러 핸들러 함수 등 SERVICE_CONTROL_PAUSE, SERVICE_CONTROL_CONTINUE, SERVICE_CONTROL_STOP 같은 메시지를 수신을 ... 시작

당신은 별도 만들 수 있습니다 할 다른 입력 매개 변수와 그 기능을 가진 박쥐 파일을 호출하는 기능은 호출 할 수 있습니다 적절한 서비스 메시지가 수신되면

공극 ServiceMainCntrlHandler (부호 길이 요청) { 스위치 (요청) { /* 수신 된 서비스 정지 신호 */ 케이스 SERVICE_CONTROL_PAUSE : 가 // 일시 정지 서비스의 현재 상태를 변경 ServiceStatus.dwCurrentState = SERVICE_PAUSED; SetServiceStatus (hStatus, & ServiceStatus);

// TODO: Call appropriate function 
    break; 

/* Received service continue signal */ 
case SERVICE_CONTROL_CONTINUE: 
    // Change the service current status to started 
    ServiceStatus.dwCurrentState = SERVICE_RUNNING; 
    SetServiceStatus (hStatus, &ServiceStatus); 

    // TODO: Call appropriate function 
    break; 

/* Received service stop signal */ 
case SERVICE_CONTROL_STOP: 
    // Change the service current status to stopped 
    ServiceStatus.dwWin32ExitCode = 0; 
    ServiceStatus.dwCurrentState = SERVICE_STOPPED; 
    ServiceStatus.dwCheckPoint  = 0; 
    ServiceStatus.dwWaitHint  = 0; 
    SetServiceStatus (hStatus, &ServiceStatus); 

    // TODO: Call the function which will invoke the bat file with input parameter as "stop" 
    break;   
default: break; 

}
} 열심히 찾는 무엇

+0

이 맞는 것 같습니다. –