LoginSignup
22
32

More than 5 years have passed since last update.

UWSC を AutoIT 置き換えをしてみよう(1)

Last updated at Posted at 2018-07-27

はじめに

すでにUWSCを愛用している方であればご存知の通り、UWSCの製作者umiumi氏が消息を絶ってしまい、現在Free版はベクターから入手できるものの今後の更新や入手が困難になることが予想されることから、UWSCをAutoIT3に置き換えることを検討したいと思い、記事を起こしました。
量があるので、何回かに分けて投稿の予定です。

UWSCに対するAutoITの構文について

今回は、UWSCの関数や構文をAutoITのどの構文に置き換えできるのかまとめていこうと思います

エディタ/IDE

  • UWSC

UDebug/XRef(UWSC Proにある専用エディタ/デバッカ)

  • AutoIT

Visual Studio Codeに「Autoit」の拡張機能を追加

EXE化、コンパイル

  • UWSC

uws2exe/uwsexe(UWSC Proにあるコンパイラ)

  • AutoIT

専用コンパイラが付属

インスペクタ

実行中のプロセスからクラス、コントロール、リソースを探してコード化を補助するツールのこと

  • UWSC

なし(外部ツールのUWSCコードの断片生成器が該当)

  • AutoIT

AutoIT Window Info

変数

ローカル変数

  • UWSC

宣言不要

  • AutoIT

local 変数名 (省略可能)

グローバル変数

  • UWSC

PUBLIC 変数名

  • AutoIT

Global 変数名

多次元配列

  • UWSC

DIM 変数名

  • AutoIT

Dim 変数名

定数定義

  • UWSC

 CONST 定数名 = 定数

  • AutoIT

const 変数名
Enum 変数名 // 初期化

型宣言

  • UWSC

なし

  • AutoIT

Int32 32ビット単精度整数
Int64 64ビット単精度整数
Double 倍精度浮動小数点数
文字列 文字列には2147483647文字まで保持可能。
バイナリ バイナリデータ。2147483647バイトまで保持可能。
ポインタ メモリアドレスポインタ。 32ビットまたは64ビット。使用されているAutoItのバージョンに依存します。

文字処理

  • UWSC

 文字列は必ず "ダブルコーテイション" で括ってください
 文字列の比較演算時は大文字、小文字の区別はしません(Option指定で変更可) 
 文字列の結合演算子は + です
 文字列に改行を含める時は <#CR>  "ダブルコーテイション" を含める時は<#DBL>

  • AutoIT

 文字列はマルチバイトの場合、必ず"ダブルコーテイション"で括ってください
 文字列の比較演算時は大文字小文字を識別しますので注意してください
 文字列の結合演算子は & です
 文字列に改行を含める場合は、\nもしくは\r\n、文字列中に"が含まれる場合は\"のようにエスケープします

演算式の優先順位

  ( )                 優先順位高い
  NOT※
  ^※
  !※※       (論理否定)
  *, /, MOD※※
  +, - ,
  >, <, =, >=, <=, <> ,==※
  
  AND
  OR, XOR              優先順位低い

※はAutoIT側にのみ存在
※※はUWSC側にのみ存在

コメント

- UWSC

// から行末までです

  • AutoIT

; から行末までです

行結合

- UWSC 

_ 行の最後に付ける事により次の行と結合させます

- AutoIT

_ 行の最後に付ける事により次の行と結合させます

マルチステートメント

  • UWSC

 ; (セミコロン)   // N88Basic的な1行IF文での使い方はダメ

  • AutoIT

なし

組込み定数

  • UWSC

 TRUE    // 1
 FALSE    // 0
 NULL    // ヌルポインタ
 EMPTY   // 値の無い状態を示す
 NOTHING   // オブジェクトの無い状態を示す

  • AutoIT

 TRUE    // 1
 FALSE    // 0
 NULL    // ヌルポインタ

特殊文字

  • UWSC

 <#CR>   // 改行コードを表す
 <#DBL>  // "ダブルコーテイションを表す
 <#TAB>  // タブを表す

  • AutoIT

@CR キャリッジリターン、 Chr(13); 改行コードとして使われます。
@CRLF= @CR & @LF ;改行コードとして使われます。
@LF ラインフィード、 Chr(10); 改行コードとしてよく使われます。
@TAB Tab文字, Chr(9)

16進指定

  • UWSC

 $     // $FF =255

  • AutoIT

$dec = Dec("FFFF") ;65535を返します

$hex = Hex(1033, 4) ;"0409"を返します。

起動時パラメーター

  • UWSC

 PARAM_STR[ ]   // 配列はゼロから

  • AutoIT

$CmdLine[] ; に実行時のパラメータが入ってくる
$CmdLine[0] ; [0]にはパラメータの個数が入っている
$CmdLine[N] ; N=1~9でパラメータが入ってくる

 For $i = 1 To $CmdLine[0]
    MsgBox(64, "Passed Parameters", "Parameter " & $i & ": " & $CmdLine[$i])
 Next

OPTION指定

  • UWSC

 // スクリプトの先頭で宣言、各種設定の変更 (,カンマにて項目の複数指定可)
 OPTION 項目
     EXPLICIT         // 変数宣言の強制(全ての変数でDIM 、もしくはPUBLIC宣言が必要)
     SAMESTR         // 文字比較、置換、サーチにて大文字、小文字を区別する
     OPTPUBLIC         // PUBLIC変数の重複定義を禁止する
     OPTFINALLY        // Try-Finally間で強制終了が発生した時にも必ず Finally部を実行する
     SPECIALCHAR       // 実行時に特殊文字(<#CR><#DBL><#TAB>)の変換をしない
     SHORTCIRCUIT       // 論理演算(if,ifb,while,repeat)にて短絡評価をする(但しカッコ内は無効)
     NOSTOPHOTKEY       // 停止ホットキーは無効にする
     TOPSTOPFORM       // STOPボタンウィンドウを最前面固定する
     FIXBALLOON        // 吹き出しを仮想デスクトップの全画面に出す
     DEFAULTFONT= フォント名 // フォント,サイズを変更する(BALLOON, MSGBOX等) 例) "MS ゴシック,16"
     POSITION= X, Y     // 位置を変更する
     LOGPATH= ログパス名   // ログファイルのパス、ファイル名を変更する
     LOGLINES= ログ行数    // ログ最大行数を変更する
     LOGFILE= ログ出力モード // ログファイルの出力= 1:出力しない、2:日付を付けない、3:秒も付ける、4:以前のログは消去
     DLGTITLE= タイトル    // INPUT, MSGBOX, SLCTBOX でのタイトルを変更する

  • AutoIT
デフォルト 説明
MAX_LINESIZE 4095 スクリプト1行の最大サイズ
MAX_ENVSIZE 32767 ENV値の最大サイズ
WINTEXTBUFFER 32767 GetWindowTextは95環境下では65535以上の場合エラーになります。 WM_GETTEXTは32767以上の場合エラーになることがあります。
MAXCALLRECURSE 5100 Call()関数の自己再帰できる最大回数
MAXEXECUTERECURSE 5100 Execute()関数の自己再帰できる最大回数
GUI_MAXCONTROLS 65532 GUIボックス内のコントロールの最大数
GUI_MAXPOINTS 256 グラフィックインフォページでのポイントの最大数
COM_MAXEVENT 64 登録できるCOMイベントの最大数
VAR_SUBSCRIPT_MAX 64 1つの配列での要素の最大数
MAIN_TIMER_DELAY 750 ms トレイアイコンの非表示/点滅/表示は750msごとにチェックされます。
CMDLINEPARAM_MAXLEN 4096 パラメータの文字数の最大値
TRAY_MAXITEMS 505 トレイメニュー内アイテムの最大数
TRAY_MAXEVENT 32 登録できるイベントの最大数
TRAY_TOOLTIPWIDTH 64 トレイのツールチップに表示する文字の最大数
ADLIB delay 250 ms デフォルトでのADLIBトリガー間の待機時間(ms)。AdlibRegister()で定義可能。

以下のデフォルト値はOpt()で変更可能

MouseClickDelay 10 ms マウスクリック間の時間
MouseClickDownDelay 10 ms クリックダウンの時間
MouseClickDragDelay 250 ms マウスドラッグ動作の開始前、終了後の待機時間
TCPTimeout 100 ms TCP関数破棄後の時間

DLL 使用定義

  • UWSC

 // DLL(API等)の関数を使用する事ができるようになります (64bitのDLLは呼び出せません)

 DEF_DLL 関数名(型, 型, ...): 戻り型: DLL名
 型: int、long、bool、uint、hwnd、string、Wstring、float、double、word、dword、byte、char、pchar、Wchar、pWchar、boolean、longlong、SafeArray

 参照引数(値変更あり)の場合は Var 宣言を付ける   関数名( var double, var int )      
 構造体:型を { } にて展開して書く    関数名( double, {int, int, int} ) 
 配列の場合は型に [] を付ける      関数名( double[], int[] )

 ※int=long= bool(4byte)、dword=uint=hwnd、 char=boolean(1byte)
   ヌルポインタを渡す時は NULL定数を使用してください

  • AutoIT

DllCall DLL内の関数を動的に実行します。
DllCallbackFree DllCallbackRegisterで作成したハンドルを解放します。
DllCallbackGetPtr Win32 APIに渡すことのできるコールバック関数へのポインタを返します。
DllCallbackRegister ユーザー定義のDLLコールバック関数を作成します。
DllClose 開いているDLLを閉じます。
DllOpen DllCallで使用するためにDLLファイルを開きます。
DllStructCreate DllCallで使用するためのC/C++スタイルの構造体を作成します。
DllStructGetData 構造体の要素のデータを返します。
DllStructGetPtr 構造体、構造体の要素へのポインタを返します。
DllStructGetSize 構造体のサイズをbyte単位で返します。
DllStructSetData 構造体内の要素にデータを設定します。

スレッド生成

  • UWSC

 // スレッド生成して実行する事ができます
 THREAD 関数名()    // 関数は別スレッドにて実行される

  • AutoIT

明言せずにユーザ関数をスレッドかすることができる
子プロセスを起こした場合以下の関数で制御します

StderrRead 実行した子プロセスのSTDERRストリームを読み取ります。
StdinWrite 実行した子プロセスのSTDINストリームに指定された文字を書き込みます。
StdoutRead 実行した子プロセスのSTDOUTストリームを読み取ります。

MODULE化

  • UWSC

 // MODULE化定義をします
 MODULE モジュール名
     CONST 変数        // モジュール名.変数 にて外部からアクセス可
     PUBLIC 変数        // モジュール名.変数 にて外部からアクセス可
     DIM 変数         // 外部からアクセス不可
     PROCEDURE モジュール名  // コンストラクタ
     PROCEDURE 関数名()
     FUNCTION 関数名()
 ENDMODULE

  • AutoIT

 モジュール化の定義はありませんが、ユーザ関数ごとにファイルを生成し
 #include <外部ファイル.au3>
 のようにして読み込むことができます、読み込まれる外部スクリプトは先頭に
 #include-once
 など定義しておくことができます。

さいごに

一旦はここまで、ただ、見た限り大体のコマンドは対応するコマンドが存在しているので、移築はそんなに難しくなさそうな感じです。
次回は、関数と制御文をメインに書いていこうと思います

22
32
1

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
22
32