hideden.hatenablog.com

はてなぶろぐー。URLなげー。

PerlでWindows操作(Win32::GuiTest編)

昨日に引き続き、Win32系を。OLEオートメーションでは一部のソフトの操作しかできないため、いわゆるマウス・キー操作マクロのようなモノを実現してみる。使うモジュールはWin32::GuiTest。ActivePerlのppmだと古いバージョンしか登録されていないので、CPANから入れることにする。が、コンパイルが必要なモジュールな為、コンパイル環境作りから始めてみる。

・・・っと思ったが、せっかくだからShibuya Perl Mongers テクニカルトーク #6で紹介があったPxPerlでやってみることにする。PxPerlのページによると、CPANモジュール用のコンパイラとしてMinGW、MS C++ Compiler、Interl C++ Compiler等が紹介されている。IntelのCompilerが速いって話は良く聞くので使ってみたいなぁっとも思いつつ、商用ダメだったり色々面倒なので、Win32版gccって感じのMinGWを使ってみる。

ってことで、先にWinGWのInstall。本来ならMinGWのページからMinGWとMSYSを落とすのだが、なぜか現時点で最新版へのリンクが無い為、直接sourceforgeよりダウンロードして、Installする。

http://prdownloads.sourceforge.net/mingw/MinGW-4.1.1.exe
http://prdownloads.sourceforge.net/mingw/MSYS-1.0.10.exe

MinGWはデフォルト設定でInstall。こういうツールには良くあることだが、Install先には日本語を含むPathやスペースを含むPathは含めない方が無難。デフォルトのC:\MinGWにInstallした。MSYSはCygwinと同じシェルのrxvtが必要ならInstall。PxPerl自身にnmakeが入っているため、無くても問題ない。詳しくはhttp://www2.atwiki.jp/ccw/pages/5.htmlなどを参照するとよさげ。Installが終了したらPATH設定。XPの場合はシステムプロパティから詳細設定の環境変数ボタンでPATH設定ができる。

C:\MinGW\bin;C:\MinGW\mingw32\bin;

をシステムの環境変数pathの先頭に追記する。

やーーーっと、PxPerlのInstallへ。PxPerlのページから、PXPerl, Installer version (29MB)を落としてくる。おもむろに実行。途中でCompilerを指定しますか?って聞かれるのでOKを押し、GCCを選ぶ。設定画面が出るが、そのままでOK。


これでPxPerlはInstall完了。なぜかlibperlがlibperl58.aを参照しようとするので、PxPerlのInstall先のC:\PxPerl\lib\Config.pmをエディタで編集。『libperl => q[perl58.lib]』になるようにする。その後、スタートメニューからPxPerlのコンソールを立ち上げ、

C:\PXPerl\bin>cpan
cpan> force install Win32::GuiTest::Examples

でInstall出来る。Win32::GuiTestをinstallしようとすると、古いバージョンが入るので『::Examples』もちゃんと付ける。なんかZIP.pmが妙にエラー吐きまくるが気にしない。詳しく調べてない。ま、解凍できてるみたいだしいいや。。。forceを付けてるのは、make testで電卓のチェックでこける為。

    MenuSelect("&View|&Scientific");
    SendKeys("%{F4}");

とか02calc.tでやってるので、日本語Windowsだとメニューが日本語な為こける。まぁしょうがない。英語のWindowsならちゃんと動くのだろう。


ってことで、Win32::GuiTestが入ったわけだが、これがものすごく機能がいっぱいある。まずはキー送信。

use Win32::GuiTest qw/:FUNC/;
use Strict;

SendKeys('a');

とやれば、フォアグラウンドウィンドウに対し、aキーを押したというウィンドウメッセージを送ることが出来る。特殊キーなども送信できる。

Win32::GuiTestの詳しい解説についてはPODを参照。

とりあえず終電の時間だから帰ろっと。。。