Introduction

ブログ内検索

  • このサイトの記事を検索 by Google

おすすめの一冊!

無料ブログはココログ

« 2012年11月 | トップページ | 2013年3月 »

2013年2月

2013-02-08

KMmacro (その1)

KMmacro というフリーソフトをご存じでしょうか?

http://www.geocities.jp/trick_room/kmmacro.html
http://www.vector.co.jp/soft/win95/util/se211440.html

たわしとさんが公開してくださっている「キーボード・マクロ&マウス・マクロ」です。

http://www.geocities.jp/trick_room/


KMmacro は、一言で言えば「マクロツール」なのですが、条件分岐とか使えるので
いろいろ遊べるツールだったりします。特に、指定座標ピクセルの色 (RGB) の取得が
できるところがすばらしい(理由は別途)。

しばらく前に、とあるソフトの自動操作プログラムを作ったときに
だいぶ使い込んだのですが(そのプログラムはお蔵入りしました)、
最近、Web ページの Evernote 取り込みの自動化をしたくなって、
再びお世話になってます。

最新版のリリースが 2006年なのですが、Windows 7 64bit でも問題なく動きます。
Virtual PC 上での Windows XP でもまったく問題なし。
すばらしいです!

で、せっかくなので、ちょっとしたノウハウを記事にしておこうかと思います。
ちなみに、添付のドキュメント (KMmacro.txt) を読んでいることが前提です。



■ ログファイルをリアルタイムに吐く

KMmacro にはテキストファイルを読み書きする機能が備わっています。

たとえば、長いマクロを書くときに、途中途中でログを吐かせると
デバッグの役に立ちます。いわゆる printf デバッグですね。

単純にテキストファイルに書き込むなら write 文を使えば OK です。

open "log_kmmacro.txt" append 1 : : write 1 (& (date "yyyy/mm/dd hh:nn:ss") " " "hogehoge") : : close 1
open して write して close する、という基本パターンですね。 # ちなみに、write 文は自動的に最後に改行をしてくれます。 # あと、write の引数の間にカンマは不要です(KMmacro.txt の誤記)。 マクロの冒頭で open しておけば、あとはログを吐きたいところで write 文を呼び出すだけです。カンタン。 ただし、これだとバッファをフラッシュしてくれないので、 いわゆる「リアルタイム」なログにはなりません。 何行か出力したところでまとめて数行分がログに書き込まれます。 fflush みたいなコマンドは(今のところ)ありません。 もちろん、マクロが終了した時点で自動的に close してくれるので ログとして破綻しているわけではありません。 しかしながら、仮想マシン上で KMmacro を実行して、 その状況だけ "tail -f" でモニタしたい、みたいな ニッチな需要が個人的にあったりします。 答えは単純で、毎回 close してあげればいいだけです。 あまり美しくないですが、とりあえず動きます。 まず、マクロのどこかで次のような関数を定義しておきます。
:MyLog1 open "log_kmmacro.txt" append 1 write 1 (& (date "yyyy/mm/dd hh:nn:ss") " " %myLog1Message) close 1 return
さらに、マクロの冒頭で次のように変数宣言しておきます。
dim %myLog1Message
あとは、ログを吐きたいところで、write 文の代わりに以下を実行します。
set %myLog1Message "hogehoge" call :MyLog1
これだけで、ログに1行吐き出すごとにバッファがフラッシュされるので、 リアルタイムにログを監視することができます。 ちなみに、組み込み関数と組み合わせることも可能です。
set %myLog1Message (& "DEBUG: getwindowpos=" (getwindowpos)) call :MyLog1
以上、ご参考まで! (つづく)

« 2012年11月 | トップページ | 2013年3月 »