便利なコマンドを使ってプログラムを書こう【初級編 第4回】
前回作ったプログラムを便利なコマンドを使って改良する
前回までで「メモ帳を起動して文字を書き保存して閉じる」といったアプリケーションの自動化プログラムを作成してきました。
主に使用したコマンドは、指定したキーボードのキーを一回押す「KBD」コマンドです。これだけでも大抵の操作はなんとかなるものですが、1回のコマンドでキーを一度しか押せないため、プログラムが長くなってしましますし、何度も同じコマンドを書くのは面倒です。
そこで、今回は便利な「SCKEY」コマンドを使って、もっと短くプログラムを改良していきましょう。
「SCKEY」コマンドを使って1度に複数のキーを入力する
まずは「SCKEY」コマンドを紹介します。このコマンドを使うと一度にいくつかのキーを連続して入力することが可能です。使い方は以下の通りです。
[入力キー1]、[入力キー2]、…は入力したいキーを順番に指定していきます。指定方法は「KBD」コマンドのときと同様で「VK_?」を使います。
さて、新しく[ウィンドウID]というのが登場しました。ここにはキーを入力したいウィンドウのIDを指定します。ウィンドウIDというのは、現在パソコン上で開いている様々なウィンドウに付けられた番号です。UWSCはこの番号でウィンドウを区別します。
したがって、まずはキーを入力したいウィンドウのIDを取得する必要があります。これには「GETID」コマンドを用います。これは、
のように使います。
例えば、新規にメモ帳を開くと以下のようなウィンドウになります。
左上の赤枠で囲った部分がタイトルです。これを、[ウィンドウのタイトル、またはその他の条件]の部分に指定してやれば、このウィンドウのIDが取得できるのです。このウィンドウのIDを実際にチェックするプログラムは以下のようになります。
1 |
MSGBOX(GETID("無題 - メモ帳")) |
「GETID(“無題 – メモ帳”)」と書いてウィンドウのIDをチェックしています。タイトルを指定する場合は、ダブルクォーテーション「”」で囲みましょう。
そして、「MSGBOX」というまたまた新しいコマンドが出てきました。これはプログラムを実行したユーザにメッセージを表示させるコマンドです。表示させたい内容をGETID( )の括弧の中に書きます。この場合はGETID(“無題 – メモ帳”)を指定してウィンドウIDを表示させています。
このコマンドを「ウィンドウIDチェック.uws」というファイルに書き込みUWSCで実行してみましょう。ウィンドウIDがメッセージとして現れるはずです。
これで、上で見たウィンドウのIDは1だと分かりました。※番号は異なっているかもしれません
さて、これで、
の[ウィンドウID]部分には、「GETID(“無題 – メモ帳”)」をいれればよいことが分かりましたが、もっといい方法があります。それは、GETID( )の括弧の中をタイトルで指定するのではなく、ウィンドウの状態で指定することです。
ウィンドウを起動した直後はそのウィンドウがアクティブになっています。アクティブとはそのウィンドウがどのウィンドウよりも画面の前にあり、操作できる状態にあるということです。このように今アクティブであるウィンドウのIDを取得するという指定もできます。
と書きます。こちらを使う方が、タイトルの入力ミスも無くなりますし、どのウィンドウに対しても使用できますのでオススメです。したがって、「SCKEY」コマンドを使って、新規メモ帳に「test」と入力するには、メモ帳を起動した後、
のようになります。
では、ここまで解説したテクニックを使って前回のプログラムを改良していきましょう。まずは、メモ帳を起動して「I’m sleepy」と入力するところまでプログラムを復習しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
EXEC("C:\Windows\System32\notepad.exe") // 「I'」の入力 KBD(VK_SHIFT, DOWN, 10) //「Shift」キーを押しっぱなしにする KBD(VK_I, CLICK, 10) //「I」キーを押す KBD(VK_7, CLICK, 10) //「7」キーを押す KBD(VK_SHIFT, UP, 10) //「Shift」キーを戻す //「m sleepy」の入力 KBD(VK_M, CLICK, 10) KBD(VK_SPACE, CLICK, 10) KBD(VK_S, CLICK, 10) KBD(VK_L, CLICK, 10) KBD(VK_E, CLICK, 10) KBD(VK_E, CLICK, 10) KBD(VK_P, CLICK, 10) KBD(VK_Y, CLICK, 10) |
まずは「I’」の入力まで(下の部分)を「SCKEY」コマンドで表現してみましょう。
1 2 3 4 5 |
// 「I'」の入力 KBD(VK_SHIFT, DOWN, 10) //「Shift」キーを押しっぱなしにする KBD(VK_I, CLICK, 10) //「I」キーを押す KBD(VK_7, CLICK, 10) //「7」キーを押す KBD(VK_SHIFT, UP, 10) //「Shift」キーを戻す |
この部分は以下のようになります。
1 |
SCKEY(GETID(GET_ACTIVE_WIN), VK_SHIFT, VK_I, VK_7) // 「I'」の入力 |
4行あったものが、1行に収まりました。ここで注目したいのは、「Shift」キーを初めに指定するとそこから先は押しっぱなしの扱いになるということです。ですので、「KBD」コマンドのようにキーを押しっぱなしにする「DOWN」や終わったら離す「UP」をイチイチ指定しないでいいようにします。
次に、「m sleepy」の入力です。これも同様にして1行で書けるでしょう。
1 |
SCKEY(GETID(GET_ACTIVE_WIN), VK_M, VK_SPACE, VK_S, VK_L, VK_E, VK_E, VK_P, VK_Y) // 「m sleepy」の入力 |
となりますね。
「SCKEY」コマンドはショートカットキーを入力するのが、得意です。次は保存のために保存ウィンドウを開くショートカットキーを入力する場面です。これはこのようになります。
1 |
SCKEY(GETID(GET_ACTIVE_WIN), VK_ALT, VK_F, VK_A) // 保存ウィンドウを開く |
これも初めに「Alt」キーを指定すると押しっぱなしになることを利用しています。
この調子で前回のプログラムを短くしていくと、以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
EXEC("C:\Windows\System32\notepad.exe") // 「I'」の入力 SCKEY(GETID(GET_ACTIVE_WIN), VK_SHIFT, VK_I, VK_7) // 「m sleepy」の入力 SCKEY(GETID(GET_ACTIVE_WIN), VK_M, VK_SPACE, VK_S, VK_L, VK_E, VK_E, VK_P, VK_Y) // 保存ウィンドウを開く SCKEY(GETID(GET_ACTIVE_WIN), VK_ALT, VK_F, VK_A) // 保存ファイル名とフォルダ名の入力 SCKEY(GETID(GET_ACTIVE_WIN), VK_T, VK_E, VK_S, VK_T) // 保存フォルダ欄を選択 SCKEY(GETID(GET_ACTIVE_WIN), VK_F4, VK_CTRL, VK_A) // フォルダ名 KBD(VK_KANJI, CLICK, 10) //日本語変換 SCKEY(GETID(GET_ACTIVE_WIN), VK_D, VK_E, VK_S, VK_U, VK_K, VK_U, VK_T, VK_O, VK_P, VK_P, VK_U) KBD(VK_F7, CLICK, 10) //全角カタカナへ変換 // エンターキーを5回押す SCKEY(GETID(GET_ACTIVE_WIN), VK_RETURN, VK_RETURN, VK_RETURN, VK_RETURN, VK_RETURN) // メモ帳の終了 SCKEY(GETID(GET_ACTIVE_WIN), VK_ALT, VK_F, VK_X) |
前回は63行で書かれていたプログラムを、たったの27行で書けてしまいました。
もう一度、今回の重要なコマンドを振り返ります。まず、
ですね。このコマンドだけで複数のキー入力を連続で行えました。続いて、
です。これは、ウィンドウのIDを取得して「SCKEY」コマンドにどのウィンドウにキー入力するかを教えます。そして、一度、確認のために使っただけですが、
も重要です。これはユーザーにメッセージを表示する役割を持っています。
おわりに
これで第4回が終了し、次回は初級編の最終回になります。次回は「繰り返し処理」と「条件分岐処理」というものを学びましょう。
「繰り返し処理」を使えば、同じ処理や似たような処理を何度も繰り返して実行してくれます。これによって何度も同じようなコードを書く手間が省けます。
「条件分岐処理」は、いくつかの違う処理からどの処理を実行するのか、その時の状態を判断して決定してくれます。これを使えば、一つのプログラムに複数の異なる処理を書くことができますし、ユーザーから情報を受け取ることでユーザーが行いたい処理を選択できるようになります。
では、次回もお楽しみください。
自動化プログラムの作成を依頼しませんか?
幣サイトでは、Windowsパソコンの自動化プログラムの作成サービスを行っています。
本サービスの特徴は、
・安価な値段
・個人から法人までどなたでも対応
・お客様の要望を全力で実現
です。
安いからといって、決して手は抜きません。
まずは、下のボタンからWindowsパソコンの自動化プログラムの作成サービスの詳細をご確認ください。