繰り返し処理と条件分岐処理【初級編 第5回】
もっと楽に高度な処理を実現しよう
「アプリケーション操作の自動化講座 初級編」も今回で最終回となりました。ここまでキーボード操作とマウス操作の基本を学んできましたが、ここまでの技術を使えば、かなりの自動化処理をできるようになっているはずです。もし何か自動化したいアプリケーションがありましたら、ここまでの知識でできるか挑戦してみるとよいでしょう。
最終回の今回は「繰り返し処理」と「条件分岐処理」というものを紹介します。これらは、さらに自動化処理でできることの幅を広げます。
「繰り返し処理」とは、同じ操作もしくは似たような操作を何度も繰り返し行う処理のことです。これによって、同じようなプログラムコードを何度も記述する必要が無くなります。100回同じ操作を繰り返すことだって一度だけその操作をするコードを書けばよいのです。
「条件分岐処理」は、ある条件をプログラムが自動で判断して実行する操作を変化させることです。例えば、「メモ帳を開きたいが既に開いている場合は何もしない、まだ開いていない場合はメモ帳を起動する」といった処理です。
繰り返し処理を習得しよう
例えば、エンターキーを何度も連続して押す操作が必要な自動化プログラムを作っていたとします。これまでの知識で、その部分のプログラムコードを書くと以下のようになるでしょう。
KBD(VK_RETURN, 100) //エンターキーを押す
KBD(VK_RETURN, 100) //エンターキーを押す
KBD(VK_RETURN, 100) //エンターキーを押す
KBD(VK_RETURN, 100) //エンターキーを押す
…
もしくは、
エンターキーを押す回数が数回、多くても十数回なら頑張ってこのような書き方でも良いかもしれません。しかし、100回ともなると、こんな書き方は面倒極まりないですし、プログラムの見た目もスマートだとは言いがたいです。
そこで、繰り返し処理を使います。繰り返し処理の使い方は以下のようになります。
[繰り返したい操作]
NEXT
エンターキーを押すことを繰り返したい場合は、[繰り返したい操作]に「KBD(VK_RETURN, 100)」と記述します。そして、100回繰り返したい場合には、[最初の数]に「1」を「終わりの数」に「100」を入れます。すると[変数]に設定した文字に「1」から「100」までの値が代入されながら100回繰り返し操作(ここではエンターキーを押す操作)が行われます。
以下に、新規のテキストファイルを起動して「X」キーを100回連続で入力するUWSCのプログラムを示します。これを「Xキーを100回押す.uws」というファイルに書き込んで実行してみましょう。
1 2 3 4 5 6 7 |
EXEC("C:\Windows\System32\notepad.exe") FOR count=1 TO 100 FUKIDASI(count, 10, 10) SCKEY(GETID(GET_ACTIVE_WIN), VK_X) // 「x」の入力 SLEEP(0.01) NEXT |
実行する際は、メモ帳を開いてその上で実行しましょう。下の画像は実行した結果です。
また、実行中に画面の左上に注目してください。黄色吹き出しに数字が表示されてると思います。
これはプログラムの4行目の「FUKIDASI」コマンドによる、吹き出し内に[変数]に設定した「count」の数字を出力しているためです。「FUKIDASI」コマンドは以下のようにして使用します。
( )内には、はじめに表示したい文字や変数を指定して、その後に吹き出しの位置を指定します。いまの場合は変数「count」を指定しているため、繰り返し処理「FOR」によって「count」の数が徐々に増えていっていることが確認できるようになっています。
繰り返し処理に関してもう一つだけ紹介しておきましょう。「WHILE~WEND」コマンドです。使い方は以下のようになります。
[繰り返したい処理]
WEND
これは[条件]に指定した条件が満たされてる間、[繰り返したい処理]に書いたコマンドを実行します。例えば、先ほども使用した変数「count」が100より小さい間、「X」キーを押し続けるプログラムは以下のようになります。
1 2 3 4 5 6 7 8 |
EXEC("C:\Windows\System32\notepad.exe") count = 0 WHILE count < 100 FUKIDASI(count, 10, 10) SCKEY(GETID(GET_ACTIVE_WIN), VK_X) // 「x」の入力 count = count + 1 WEND |
3行目で、変数「count」に0を代入しています。このように「=」は右に書いたもの「0」を左に書いたもの「count」に代入するといった働きを持ちます。
続いて4行目からが「WHILE」文の始まりです。
となっていますが、「count」はいま「0」ですので、「count < 100」は「0 < 100」となり条件は満たされています。したがって、WHILEとWENDの間に書いたコマンドが実行されます。「FUKIDASI」と「SCKEY」コマンドは前と一緒ですね。
7行目の、
は変数「count」に1を足したものを再び「count」に代入していますので、0だった「count」は1になります。その後もこのコマンドを通るたびに値がプラス1されていきます。
そして、countが100に達したとき、「count < 100」は「100 < 100」となり条件を満たさなくなります。そこで繰り返し処理が終了しWHILE~WENDの外に出て、プログラムが終了します。つまり、countが0から99まで「X」キーを押すことなり、このプログラムの動作は前の「FOR」を使ったものと同じになります。
「FOR」と「WHILE」コマンドを使った2種類の繰り返し処理を紹介しました。ここでは同じように動作するプログラムを作りましたが、自分でアプリケーションの自動化プログラムを作っていると、状況によって「こっちの方がいまは適している」や「こっちでしかやりたい操作ができない」ということが出てきます。どちらの方法も使えるようになって、臨機応変に使い分けましょう。
条件に使った記号「<」は他にも下の表に示すように様々なものが使用できます。
記号 | 使用例 | 意味 |
= | A = 100 | 変数「A」は100である |
< | A < 100 | 変数「A」は100より小さい |
> | A > 100 | 変数「A」は100より大きい |
<= | A <= 100 | 変数「A」は100以上 |
>= | A >= 100 | 変数「A」は100以下 |
<> | A <> 100 | 変数「A」は100ではない |
条件分岐処理を使ってみよう
続いて、「条件分岐処理」を紹介します。これはある条件が満たされた時だけ、コマンドを実行するといったもので、以下のように書きます。
これで、[条件]に書いた条件が満たされた場合にのみ、[処理]が実行されます。
例として、変数「count」が100だった場合に、吹き出しに「条件分岐処理テスト」と表示するプログラムを以下に示します。
1 2 3 |
count = 100 IF count = 100 THEN FUKIDASI("条件分岐処理テスト", 10, 10) SLEEP(10) |
これを、「条件分岐処理テスト.uws」というファイルに保存して、実行しましょう。左上に黄色の吹き出しで「条件分岐処理テスト」と表示されれば成功です。
1行目は変数「count」に100を代入しています。2行目が「IF」コマンドによる条件分岐であり、変数「count」が100のときに、吹き出しを表示します。3行目は「SLEEP」コマンドで10秒間プログラムを停止し、吹き出しがすぐに消えないようにしています。
1行目を変更して、変数「count」の値を99など100以外の数字にしてみましょう。吹き出しは表示されないはずです。
処理の部分を複数行に渡って書きたいときは、「IFB」コマンドを使います。
[処理①]
[処理②]
…
ENDIF
「IFB~ENDIF」の間には何行書いてもオッケーです。
また、以下のようにすれば、[条件]を満たさなかった場合の処理についても記述することができます。
[条件を満たした場合の処理]
ELSE
[条件を満たさない場合の処理]
ENDIF
[条件]を満たさない場合に実行したい処理を[条件を満たさない場合の処理]に書きます。
「条件分岐処理テスト.uws」を編集して、変数「count」が100ではない場合には、「100ではありません」という吹き出しを表示するプログラムを作って実行してみましょう。以下のプログラムです。
1 2 3 4 5 6 7 |
count = 99 IFB count = 100 THEN FUKIDASI("条件分岐処理テスト", 10, 10) ELSE FUKIDASI("100ではありません", 10, 10) ENDIF SLEEP(10) |
これを実行して、「100ではありません」という吹き出しがでれば成功です。
さらに分岐を増やしたい場合は、
[条件1を満たした場合の処理]
ELSEIF [条件2] THEN
[条件2を満たした場合の処理]
ELSE
[条件を満たさない場合の処理]
ENDIF
という感じで「ELSEIF」を付け加えていけば、いくつでも条件分岐を増やしていけます。
これで、「繰り返し処理」と「条件分岐処理」の紹介は終わります。「繰り返し処理」と「条件分岐処理」はここで紹介した以外にも書き方がありますが、とりあえずは、これらを習得しましょう。大抵の場合は不便することはないでしょう。
おわりに
今回で「アプリケーション操作の自動化講座【初級編】」は終わりです。初級編と称していますが、ここまでで学んだ知識でかなりのことができるようになっているはずです。自分が自動化したいアプリケーションがある場合はここらで一度トライしてみてはどうでしょうか?
自動化プログラムの作成を依頼しませんか?
幣サイトでは、Windowsパソコンの自動化プログラムの作成サービスを行っています。
本サービスの特徴は、
・安価な値段
・個人から法人までどなたでも対応
・お客様の要望を全力で実現
です。
安いからといって、決して手は抜きません。
まずは、下のボタンからWindowsパソコンの自動化プログラムの作成サービスの詳細をご確認ください。