はじめに
こんにちは。今年度から社内PCのキッティングに携わるようになった@Cheeeeeseです。
前回に引き続き、付属してきたマニュアルを参考にして、記録したコードの編集方法について記載します!
コードの記録を行ったままだと、不要なコードが記述されてたり、チェックが入っていない、固定の条件しかできないなど、そのままではキッティングに使用することはできません。そこで、必ず編集を行います。(引用:SetROBO for Kitting 入門ガイド Ver.2.4)
ということで、SetROBOでキッティング作業を記録すると自動でコードを出力してくれますが、やはり記録した作業のみになってしまうので、必ずコードの編集が必要みたいです。
環境
- Windows 11 Pro 21H2 (64bit)
- SetROBO for Kitting V1.9.5体験版
参考にしたマニュアルについて
ダウンロードした際に付属してきた「SetROBO for Kitting 入門ガイド Ver.2.4」 の「STEP06 コンピュータ名の変更② ~記録後の編集~」を参考にしました。
前回まで
前回、記録したコンピュータ名変更のコードはこちらです。
このコードを編集していきます。
手順
01.変数を追加
待機時間と設定するコンピュータ名の変数を追加します。
//待機時間
int basicWait = 1000;
//長めの待機時間
int longWait = 15000;
//コンピュータ名の変数
string PCName = "PC01";
02.追加した変数で記録したコードを修正
記録したコードの待機時間とコンピュータ名を修正します。
待機時間は記録した際に自動で入力されたPlayLib.Sleep(5313);
の数字を待機時間の変数に置き換えます。
基本的に待機時間1秒の「basicWait」を使用しますが、次の操作画面が出るまで1秒以上かかるところは「longWait」を使用します。
👉Sleep関数について
Sleep関数は、次のコードの実行を指定の時間待機してくれます。
ちなみに時間はミリ秒で設定する必要があります!(1秒なら1000ミリ秒)
コンピュータ名は~.Input("PC01")
の文字列を「PCName」に置き換えます。

03.画面が表示されるまで待機するコードを追加
「システムのプロパティ画面」を開いた後と「コンピューター名/ドメイン名の変更画面」を開いた後に、その画面が表示されるまで待機するコードを追加します。
//システムのプロパティ画面が表示するまで待機
PlayLib.WaitWindow("システムのプロパティ", true ,60);
//システムのプロパティ画面が表示するまで待機
PlayLib.WaitWindow("コンピューター名/ドメイン名の変更", true ,60);
👉WaitWindow関数について
WaitWindow関数は、指定の画面が表示されるまで待機したり、逆に画面が消えるまで待機したりできます。
引数には[画面名]、[表示(true))/非表示(false)]、[待機時間(秒)]を設定。
画面待機のコードを入れると、操作対象の画面がちゃんと表示されてから次の操作を実行したり、画面が確実に消えてから次の操作を実行するなど、次の操作が確実に行えるようになるようです。

04.設定した値が正しいか確認するコードを追加
~.Input(PCName)
で入力したコンピュータ名が、正しく入力されているか確認するコードを追加します。
//コンピュータ名の値のチェック
PlayLib.Window("コンピューター名/ドメイン名の変更").Edit("コンピューター名(C):").CheckProperty("Text", PCName);
👉CheckProperty関数について
CheckProperty関数は、対象のコントロールのプロパティを取得して、期待する状態になっているかを確認することができます。
確認結果(成功(True)/失敗(False))はログに自動で出力されるようです。
また、スクリーンキャプチャーも自動で取得することができるそうです。(Conductorの設定で変更可能)
引数には[確認するプロパティ]、[期待値]を設定。
これを使うと、入力した値が正しいか確認以外にも、チャックボックスにチェックが入っているかや、コントロールが有効かなども確認できるみたいです。

これで記録後の編集が出来ました。それでは実行~・・・
って、いや、ちょっと待てーい
このままじゃ画面が表示されなかった場合も、コンピュータ名の入力に失敗していた場合も次の処理に進むやん。
なので、マニュアルにはありませんが、条件分岐を追加して、画面が表示されなかった場合やコンピュータ名の入力に失敗した場合の処理を勝手に追加していきます。
05.条件分岐を追加
条件分岐するには「if文」が使用できるみたいです。
今回は画面が表示されなかった場合や、コンピュータ名の入力に失敗した場合は、失敗した旨のログを出力して処理を中断させるようにします。
こんな感じでif文を追加します。
//システムのプロパティ画面が表示するまで待機
if(PlayLib.WaitWindow("システムのプロパティ", true ,60) == true)
{
# システムのプロパティ画面が表示された場合の処理(省略)
}
else
{
//システムのプロパティ画面が表示されない場合エラー
PlayLib.TestLogError("「システムのプロパティ」画面が表示されませんでした。");
return -1;
}
ログの出力はTestLog()
やTestLogError()
を使用します。
ログ出力のコード | ログタイプ | 出力結果 |
---|---|---|
PlayLib.TestLog(); | 通常 | ![]() |
PlayLib.TestLogWarning(); | 警告 | ![]() |
PlayLib.TestLogError(); | エラー | ![]() |
こんな感じで画面待機や値チェックのところにif文を追加しました。
それでは実行!
※コンピュータ名は被っちゃうのでstring PCName = "TestPC01";
にしました。
実行結果の確認
実行結果は「SetROBO-LogViewer」で確認ができます。
チェック関数を使用するとこんな感じで確認結果とスクリーンキャプチャが確認できるみたいです。
今回記録されたコードはこちら
using System;
using System.Drawing;
using Arp.Prova.ImageLibrary;
using Arp.Prova.CsvLib;
using Arp.Prova.PlayLib;
// CodeClass
public class CodeClass
{
public static int CodeStart()
{
// セットアップコードの記述
//待機時間
int basicWait = 1000;
//長めの待機時間
int longWait = 15000;
//コンピュータ名の変数
string PCName = "TestPC01";
//システムのプロパティを開く
PlayLib.ProcessStart("sysdm.cpl");
//システムのプロパティ画面が表示するまで待機
if(PlayLib.WaitWindow("システムのプロパティ", true ,60) == true)
{
PlayLib.Window("システムのプロパティ").Button("変更(C)...").Click(21, 15);
PlayLib.Sleep(basicWait);
//コンピュータ名/ドメイン名の変更画面が表示するまで待つ
if(PlayLib.WaitWindow("コンピューター名/ドメイン名の変更", true ,60) == true)
{
PlayLib.Window("コンピューター名/ドメイン名の変更").Edit("コンピューター名(C):").Input(PCName);
PlayLib.Sleep(basicWait);
//コンピュータ名の値のチェック
if(PlayLib.Window("コンピューター名/ドメイン名の変更").Edit("コンピューター名(C):").CheckProperty("Text", PCName) == false)
{
//コンピュータ名の設定に失敗した場合エラー
PlayLib.TestLogError("コンピュータ名の設定に失敗しました。");
return -1;
}
PlayLib.Window("コンピューター名/ドメイン名の変更").Button("OK").Click(56, 12);
PlayLib.Sleep(longWait);
PlayLib.Window("コンピューター名/ドメイン名の変更").Button("OK").Click(28, 8);
PlayLib.Sleep(basicWait);
PlayLib.Window("システムのプロパティ").Button("閉じる").Click(43, 7);
PlayLib.Sleep(basicWait);
PlayLib.Window("Microsoft Windows").Button("後で再起動する(L)").Click(58, 11);
}
else
{
//コンピュータ名/ドメイン名の変更画面が表示されない場合エラー
PlayLib.TestLogError("「コンピュータ名/ドメイン名の変更」画面が表示されませんでした。");
return -1;
}
}
else
{
//システムのプロパティ画面が表示されない場合エラー
PlayLib.TestLogError("「システムのプロパティ」画面が表示されませんでした。");
return -1;
}
return 0;
}
}
最後に
画面待機や確認の関数が既にあるので、記録後のコードの編集も楽でした!
次回は実際によくうちでやっているキッティング作業の自動化コードを作成してみようと思います。