5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【SetROBO】記録したコードを編集する

Last updated at Posted at 2022-10-06

はじめに

こんにちは。今年度から社内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の設定で変更可能)
引数には[確認するプロパティ]、[期待値]を設定。

これを使うと、入力した値が正しいか確認以外にも、チャックボックスにチェックが入っているかや、コントロールが有効かなども確認できるみたいです。

これで記録後の編集が出来ました。それでは実行~・・・

って、いや、ちょっと待てーい:raised_hand:
このままじゃ画面が表示されなかった場合も、コンピュータ名の入力に失敗していた場合も次の処理に進むやん。

なので、マニュアルにはありませんが、条件分岐を追加して、画面が表示されなかった場合やコンピュータ名の入力に失敗した場合の処理を勝手に追加していきます。

05.条件分岐を追加

条件分岐するには「if文」が使用できるみたいです。
今回は画面が表示されなかった場合や、コンピュータ名の入力に失敗した場合は、失敗した旨のログを出力して処理を中断させるようにします。

こんな感じでif文を追加します。

システムのプロパティ画面が表示するまで待機の条件分岐
//システムのプロパティ画面が表示するまで待機
if(PlayLib.WaitWindow("システムのプロパティ", true ,60) == true)
{
    # システムのプロパティ画面が表示された場合の処理(省略)
}
else
{
    //システムのプロパティ画面が表示されない場合エラー
    PlayLib.TestLogError("「システムのプロパティ」画面が表示されませんでした。");
    return -1;
}

ログの出力はTestLog()TestLogError()を使用します。

ログ出力のコード ログタイプ 出力結果
PlayLib.TestLog(); 通常 通常.jpg
PlayLib.TestLogWarning(); 警告 警告.jpg
PlayLib.TestLogError(); エラー エラー.jpg

こんな感じで画面待機や値チェックのところにif文を追加しました。

それでは実行!
※コンピュータ名は被っちゃうのでstring PCName = "TestPC01";にしました。
実行-1.gif

実行結果の確認

実行結果は「SetROBO-LogViewer」で確認ができます。
チェック関数を使用するとこんな感じで確認結果とスクリーンキャプチャが確認できるみたいです。

エラーの場合のログはこんな感じでした!

今回記録されたコードはこちら

SetROBO
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;
	}
}

最後に

画面待機や確認の関数が既にあるので、記録後のコードの編集も楽でした!
次回は実際によくうちでやっているキッティング作業の自動化コードを作成してみようと思います。

参考にしたサイト

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?