2012/06/16(土)AutoIt!でBTScanをちょっと改良

BTScanの記事なのかAutoIt!の記事なのか判断付かないけどとりあえず書いておこう。

AutoIt!はuwsc等で知られる、いわゆるWindows自動化ツール(マクロレコーダ)である。

uwsc(無料版)と比較すると、
[劣る]
・自動記録がちょっと弱い(いわゆる座標依存系のスクリプトを吐くことが多い)
・専用エディタが微妙に使いづらい
(一度拡張子を.au3にしないとメニューが開かないって!)
・仕様に慣れるまでに時間がかかる

[優る]
・とにかく高機能
・正規表現文字列操作もファイル操作もなんでもあり
・GUIも作れる、フォームエディタ付きで作りやすい
・exeもお手軽に作れる(uwscだとPro版のみ)

といったような感じ。どっちかというとマクロいじってると言うよりほぼ一言語を覚えるのに近い。類似のことはやろうと思えば.NET系列なりRubyなりでもできるわけで、初期学習コストが高そうなAutoIt!を使うメリットはかなり微妙なところではある。とはいえ、やっぱりお手軽感はあるか。

さて、今回BTScanにちょっと機能が欲しいってんで、AutoIt!でスクリプトを書いてみた。

目的としては、カウンタリセットボタンが欲しいのと、フォルダ名の最下位部だけ変更するような機能を追加したい。

AutoIt!で書くとこんな感じ。
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("BTScan Tool", 623, 75, 192, 114)
GUISetFont(9, 400, 0, "MS Pゴシック")
$inputFolder = GUICtrlCreateInput("", 8, 8, 489, 20)
$buttonReset = GUICtrlCreateButton("カウンタリセット", 456, 40, 161, 25)
$buttonFolderSet = GUICtrlCreateButton("フォルダ名セット", 504, 8, 113, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Run("c:\\hogehoge\\BTScan\\BTScan.exe")
WinWaitActive("[Class:#32770]")

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $buttonFolderSet
			$org = ControlGetText("BTScan 3", "", 1000)
			$newFolder = GUICtrlRead($inputFolder)
			$newPath = StringRegExpReplace($org, "^(.*?)\\([^\\]*)$", "$1\\" & $newFolder)
			ControlSetText("BTScan 3", "", 1000, $newPath)
		Case $buttonReset
			ControlSetText("BTScan 3", "", 1005, "1")
	EndSwitch
WEnd
これを実行すると、ボタン2つテキストボックス1つのフォームがBTScanと共に立ち上がる。hogehogeは適当に読み替えて欲しい。例外処理とかは全く考慮無し。

ちなみに、コメントで囲まれたGUI部分はフォームエディタをWYSIWYGにいじってそのまま貼り付けただけ。

このフォームは別のファイルで保存しておける。コピペの手間が発生するとは言え十分にありレベル。

…うーん、でもやっぱり他の言語使った方が良い?

(2012/7/12) スクリプト微修正。TWAINダイアログ出てても変更反映可に。
OK キャンセル 確認 その他