0

起動時にバッチ ファイルを実行する Windows サービスを作成したいと考えています。私はAPIのようなものを知っていますcreateserviceが、私が欲しいのは、私がパラメータでバッチファイルを呼び出したいと言うときと、パラメータStart serviceで同じバッチファイルを呼び出したいと言うときですService Control Managerstartstop

4

1 に答える 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 に答える