【2023年】これからブログを始める人へおすすめの書籍

Kissy

【UWSC】基本構文とサンプル集

作成: 更新:

【UWSC】サンプル集

PCの操作を繰り返し行うことがあります。このように繰り返し行うPCの操作を自動化するためのアプリがUWSCです。UWSCは古いアプリですが、今でもよく使われています。

UWSCはVBライクなスクリプト言語で、PC操作(主にUI操作)を記述できるアプリになります。

この記事では、UWSCの基本的な構文とサンプルをまとめています。

UWSCのダウンロード先

UWSCは以下からダウンロードできます。

UWSC

基本構文

コメント

// コメントの内容

行末までがコメントとして扱われます。

変数(DIM)

// DIM 変数名 [=初期値]
DIM count = 100

変数を宣言します。

配列でない場合、DIMは省略可能ですが、変数であることを明示するために省略しない方が良いです。OPTIONを指定することでDIMによる宣言を強制することもできます。

DIMで宣言した場合は、ローカル変数となり、スコープは自作関数内になります。

配列(DIM [])

// DIM 変数名[サイズ] [=値[,値 ...]]
DIM list_1[3] = 1,2,3
DIM list_2[] = 1,2,3

配列を宣言します。

配列の値はカンマ区切りで記載します。サイズは記載を省略することができます。

連想配列(HASHTBL)

// 連想配列の宣言
// HASHTBL 変数名 [=オプション(複数の場合は`or`でつなげる)]
HASHTBL dict

// 要素の追加(値の代入)
dict["red"] = "赤"
dict["blue"] = "青"

// 要素の参照
PRINT dict["red"]
PRINT dict["blue"]

// キーの存在確認
PRINT dict["red", HASH_EXISTS]

// キーを取得
PRINT dict[0, HASH_KEY]

// 値を取得する
PRINT dict[0, HASH_VAL]

// 要素の削除
PRINT dict["blue", HASH_REMOVE]

// 配列をクリア
dict = HASH_REMOVEALL

連想配列の宣言時に指定可能なオプションは以下の通りです。

オプション 説明
HASH_CASECARE キーの大文字小文字を区別する。
HASH_SORT キーをソートする。

グローバル変数(PUBLIC)

// PUBLIC 変数名 [=初期値]
PUBLIC count = 100

構文はDIMと一緒です。違いは、スコープが自作関数外までとなり、どこからでもアクセス可能になります。

定数

// CONST 変数名 = 初期値
CONST pie = 3.14

定数を宣言します。宣言後は値を変更できません。

演算子

算術演算子は以下の通りです。

算術演算子 説明
( ) 演算の優先順位を変更する。
! 否定
* 乗算
/ 除算
MOD 剰余
+ 加算
- 減算
= 代入

比較演算子は以下の通りです。

比較演算子 説明
> 大なり
< 小なり
= 等価
>= 大なりイコール
<= 小なりイコール
<> 不等価
AND 論理積
OR 論理和
XOR 排他的論理和

文字列

DIM str="文字列"

文字列はダブルクォーテーションでくくります。

DIM str="文字列を" + "結合する"

文字列を結合する場合は+演算子を使います。

複数行ステートメント

DIM list=1, _
         2, _
         3

1行の命令が長くなる場合などで、命令を複数行に分けたい場合は、_を行末につけます。行末に_がある場合は、命令が次の行に続いていることを示します。

特殊文字

特殊文字は文字列中にそのまま記述できない文字です。特殊文字は以下の文字列で表します。

特殊文字 説明
<#CR> 改行
<#DBL> ダブルクォーテーション
<#TAB> タブ

メッセージ出力(PRINT)

PRINT "メッセージ"

メッセージ出力用のウィンドウにメッセージを出力します。

吹き出し(FUKIDASI)

FUKIDASI(メッセージ, 表示位置x座標, 表示位置y座標, [向き, フォントサイズ, フォント名, 文字色, 背景色, 透明度])

吹き出しを表示します。

関数(FUNCTION)

FUNCTION 関数名([引数リスト])
	// 関数の処理
	RESULT = 戻り値
FEND

FUNCTION文は独自関数を定義する場合に使用します。

<引数リスト>には、関数に渡す引数を定義します。複数の引数を渡す場合には、カンマ区切りで定義します。

また、<引数リスト>はarg1, arg2のように引数名のみ記載した場合は、値渡しとなり、VAR arg1, VAR arg2のようにVARをつけた場合は参照渡しになります。

PROCEDURE文とことなり、関数は戻り値を返すことができます。戻り値はRESULTに代入します。

プロシージャー(FUNCTION)

FUNCTION 関数名(引数リスト)
	// 関数の処理
	RESULT = 戻り値
FEND

プロシージャーもFUNCTIONと同様に独自関数を定義することができます。FUNCTIONと異なるのは戻り値が返せない、という点です。

オプション(OPTION)

// OPTION オプション(複数指定はカンマ区切り)
OPTION EXPLICIT,OPTPUBLIC

オプションは、主にスクリプトに対するルールを宣言する構文です。指定できるオプションは以下の通りです。

オプション 説明
EXPLICIT DIMまたはPUBLICによる変数宣言を強制する。
SAMESTR 文字列の比較、置換、検索で大文字/小文字を区別する。
OPTPUBLIC PUBLIC変数の重複宣言を禁止する。
OPTFINALLY TRY-FINALLY間で強制終了した場合にもFINALLY部を実行する。
SPECIALCHAR 特殊文字(<#CR><#DBL><#TAB>)の返還を無効にする。
SHORTCIRCUIT 論理演算で短絡評価をする。
DEFAULTFONT MSGBOXFUKIDASI等に使用するフォントとサイズを指定する。(例:DEFAULTFONT=“フォント名, フォントサイズ”)
POSITION 位置を変更する。(例:POSITION=X, Y)
LOGPATH ログのパスを指定する。(例:LOGPATH=“C:\temp\uwsc.log”)
LOGLINES ログの最大出力行数を指定する。(例:LOGLINES=1000)
LOGFILE ログの出力方法を指定する。1:出力しない。2:日付なしで出力する。3:秒を出力する。4:過去のログをクリアする。(例:LOGFILE=3)
DLGTITLE INPUT, MSGBOX, SLCTBOXのタイトルを変更する。(例:DLGTITLE=“UWSC”)

制御構文

IF文

IF 条件式1 THEN
  //条件式1がTRUEの場合の処理
[ELSEIF 条件式2 THEN]
  //条件式2がTRUEの場合の処理
ELSE
  //条件式1、条件式2ともにFALSEの場合の処理
ENDIF

条件によって処理を分けたい場合にはIF文を使います。

FOR文

FOR カウンタ変数名 = 初期値 TO 終了値 STEP 刻み幅
  // 繰り返しの処理
NEXT

FOR文は繰り返して処理したい場合に使います。

繰り返し処理はFOR文以外にWHILE文やREPEAT文があります。FOR文の特徴はカウンタを使用してカウンタがある値になるまで繰り返す点になります。配列を順に処理するといった場合に便利です。

WHILE文

WHILE 条件式
  //繰り返しの処理
WEND

WHILE文は繰り返して処理したい場合に使います。

WHILE文はFOR文と異なり、カウンタを持っていません。カウンタは自前で用意する等が必要です。また、REPEAT文と異なり文の先頭に条件式があるため、繰り返し処理が一度も実行しない場合があります。

REPEAT文

REPEAT
	//繰り返しの処理
UNTIL 条件式

WHILE文はWHILE文と同じく、カウンタを持っていません。カウンタは自前で用意する等が必要です。また、WHILE文と異なり文の最後に条件式があるため、少なくとも1回は繰り返し処理が実行されます。

SELECT文

SELECT 式
	CASE 文字列or数値or変数
		処理
	[CASE 文字列or数値or変数]
		処理
	DEFAULT
		上記CASEにいずれも合致しない場合
SELEND

値によって処理を分ける場合に使用します。

CASE文は条件式ではなく値を記載するため、コードが短く見やすくなります。

CALL文

// CALL 別のUWSファイルパス
CALL UWSファイルパス

別のUWSファイルを呼び出す場合に使用します。ファイルを分割することで、スクリプトが見やすく管理しやすくなります。

BREAK文

FOR i = 1 TO 100 STEP 1
	// iが10になったらループを抜ける
	IF i = 10 THEN BREAK
	PRINT i
NEXT

スクリプト構文 FOR, WHILE, REPEAT のループを中断します。

CONTINUE文

FOR i = 1 TO 100 STEP 1
	// iが10はPRINTせず、11のループから再開する
	IF i = 10 THEN CONTINUE
	PRINT i
NEXT

スクリプト構文 FOR, WHILE, REPEAT のループで次のループから処理を再開する。

EXIT文

FUNCTION MYFUNCTION()
	// 条件がTRUEの場合、関数を終了する
	IF 条件 THEN
		EXIT
	ENDIF
FEND

関数の処理を途中で終了する場合、EXIT文を使います。

EXITEXIT文

FUNCTION MYFUNCTION()
	// 条件がTRUEの場合、スクリプトを終了する
	IF 条件 THEN
		EXITEXIT
	ENDIF
FEND

処理の途中でスクリプトを終了する場合、EXITEXIT文を使います。

制御関連スクリプト関数

アプリを起動する

// ウィンドウID = EXEC(アプリのパス, [同期フラグ, x座標, y座標, 幅, 高さ])
winId = EXEC("c:\windows\system32\notepad")

アプリを起動する場合に、EXEC関数を使用します。

<同期フラグ>
FALSE:アプリの終了を待たない(デフォルト)
TRUE:アプリの終了を待つ

<x座標, y座標, 幅, 高さ>
アプリを表示する位置とウィンドウのサイズを指定する。

スリープする

// SLEEP(スリープする秒数)
SLEEP(0.5)

DOSCMD

// 標準出力 = DOSCMD(コマンド, [同期フラグ, 画面表示, UNICODE出力])

DOSコマンドを実行する場合に、DOSCMD文を使用します。

<同期フラグ>
FALSE:DOSコマンドの終了を待たない(デフォルト)
TRUE:DOSコマンドの終了を待つ

<画面表示>
FALSE:コマンドプロンプトを表示しない(デフォルト)
TRUE:コマンドプロンプトを表示する

<UNICODE出力>
FALSE:標準出力をANSIで出力する(デフォルト)
TRUE:標準出力をUNICODEで出力する

最後まで読んでいただきありがとうございます。
また読んでくださいませ。
そんじゃーね。

関連記事

SPONSORED LINK
SPONSORED LINK