起動時にバッチ ファイルを実行する Windows サービスを作成したいと考えています。私はAPIのようなものを知っていますcreateservice
が、私が欲しいのは、私がパラメータでバッチファイルを呼び出したいと言うときと、パラメータStart service
で同じバッチファイルを呼び出したいと言うときですService Control Manager
start
stop
1 に答える
1
サービスの開始/停止/一時停止などの Windows サービス アクションを実行するたびに、RegisterServiceCtrlHandler() で登録したサービス メイン コントローラー ハンドラー関数は、SERVICE_CONTROL_PAUSE、SERVICE_CONTROL_CONTINUE、SERVICE_CONTROL_STOP などのメッセージを受け取ります。
別々の関数を作成して、異なる入力パラメーターでバッチ ファイルを呼び出すことができます。これらの関数は、適切なサービス メッセージを受信したときに呼び出すことができます。
void ServiceMainCntrlHandler(unsigned long request) { switch(request) { /* サービス一時停止信号を受信 */ case 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;
}
}
于 2012-07-04T12:19:59.533 に答える