Windowsのサービスの状態を取得し、状態により表示するダイアログをCase文で分岐させるサンプル

本サンプルでは、AutoMateの「サービス」(Service)アクションと、「Select」アクションのCase文による分岐処理を使用して、サービスの状態を取得し結果により表示するダイアログを変更するサンプルを紹介します。

サンプルの流れとしては、
1. 変数を定義
2. サービス「Windows Time」の状態を取得
3. 2の結果により、表示するダイアログをCase文で変更する

なお、本サンプルでは、どのPCにも標準で搭載されている「Windows Time」を例としています。
また、本サンプルではあくまでも状態を取得するだけでサービスの開始処理・停止処理は実行しません。
実際には、停止中であれば該当のサービスを開始する、といったような使用方法も可能です。
※AutoMate実行ユーザーによっては、サービスの開始処理・停止処理を実行するとアクセス権限不足でエラーになる場合もあります

【注意点】
AutoMateにおける「Case」文は、ワイルドカードや条件式ではなく、必ず固定文字列(定数)でなければなりません

以下、サンプルです。

<AMVARIABLE NAME="var_Status" VALUE="" DESCRIPTION="サービスの状態" />
<!--ローカルのサービス「Windows Time」の状態を取得-->
<AMSERVICES ACTIVITY="state" SERVICE="Windows Time" RESULTVARIABLE="var_Status" />
<!--状態により、Case文で処理を分岐させる なお、各Caseは定数(固定文字列)でなければならない-->
<AMSELECTCASE EXPRESSION="%var_Status%" />
<AMCASE CONSTANT="Running" />
<AMSHOWDIALOG MESSAGE="サービスは正常に稼働しています" COUNTDOWNDELAY="5" />
<AMCASE ACTIVITY="endcase" />
<AMCASE CONSTANT="Stopped" />
<AMSHOWDIALOG MESSAGE="サービスは停止しています" COUNTDOWNDELAY="5" />
<AMCASE ACTIVITY="endcase" />
<AMCASE CONSTANT="StartPending" />
<AMSHOWDIALOG MESSAGE="サービスは開始処理中です" COUNTDOWNDELAY="5" />
<AMCASE ACTIVITY="endcase" />
<AMCASE CONSTANT="StopPending" />
<AMSHOWDIALOG MESSAGE="サービスは停止処理中です" COUNTDOWNDELAY="5" />
<AMCASE ACTIVITY="endcase" />
<AMCASE CONSTANT="ContinuePending" />
<AMSHOWDIALOG MESSAGE="サービスは再開処理中です" COUNTDOWNDELAY="5" />
<AMCASE ACTIVITY="endcase" />
<AMCASE CONSTANT="PausePending" />
<AMSHOWDIALOG MESSAGE="サービスは一時停止処理中です" COUNTDOWNDELAY="5" />
<AMCASE ACTIVITY="endcase" />
<AMCASE CONSTANT="Paused" />
<AMSHOWDIALOG MESSAGE="サービスは一時停止中です" COUNTDOWNDELAY="5" />
<AMCASE ACTIVITY="endcase" />
<AMSELECTCASE ACTIVITY="end" />

Knowledge記事検索

Knowledge

News・Information