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 1open して 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以上、ご参考まで! (つづく)
« CSS の content プロパティで Unicode 記号を使う | トップページ | WordPress のサーバ移行 »