スクリプト7 (プラグインを使う)


PowerProはプラグインを使うことでBuilt-in コマンド以外のことが実行できるようになります。 ここではプラグインの簡単な使い方を説明します。

◆ プラグインを使う準備

プラグインを使う前に準備しなければなりません。 PowerProには最初からいくつかのプラグインが同封されています。ここではこれらのプラグインを使ってみたいと思います。

まずエクスプローラなどでPowerProをインストールしたフォルダを表示しファイルの中から「plugins.zip」というファイルを見つけてください。 この中にプラグインのDLLファイルが入っています。先にPowerProをインストールしたフォルダに「plugins」というフォルダを作り、「plugins.zip」 というファイルを解凍ソフトで解凍したあとその中のファイル(win.dllやevent.dllなど)を全て先に作った「plugins」フォルダに入れます。通常は「C:\Program Files\PowerPro\plugins」 のところに入れることになります。

これで準備ができました。(ちょっと覚えてないのですがもしかするとインストールしたときに既にpluginsフォルダに プラグインが入っているかもしれません。その場合はこの作業は必要ありません。)


◆ 基本的な使い方

PowerProのプラグインはpluginsフォルダに入っているDLLファイルです。pluginsフォルダを見るといくつかのDLLファイルが入っていることがわかると思います。 PowerProでプラグインを使うときはこのDLLファイルの名前を使います。

また一つのプラグイン(DLLファイル)が持つ機能は一つだけではありません。サービスと呼ばれるキーワードを使うことで複数の機能を利用することができます。 例えばWinプラグイン(win.dll)にはcloseやmoveなどのサービスがあります。

PowerProのプラグインを使うときはこれらDLLのファイル名と使いたいサービス名をセットにして使います。プラグインを使うときの書き方は 次のようになります。

dllname.service(args)

dllnameは使いたいプラグインのDLLファイル名です。serviceは使いたいサービス名、argsというのはサービスがとる引数です。 例えばWinプラグイン(win.dll)にはmoveというサービスがあります。これは指定したウィンドウを指定した位置に移動させるサービスです。 moveサービスは「move(cl, x, y)」のような形でclとxとyという引数をとります。clはキャプションリスト(スクリプト3を参考)で x、yは移動先のスクリーン座標です。このプラグインを使ってメモ帳を(225, 354)という位置に移動させたいと思ったとすると

win.move("=notepad", 225, 354)

と記述します。使うプラグインのDLLファイル名はwin.dllなので最初に「win」と書き、「.」(ドット)を次に書きます。 その次にサービス名「move」を書き続く( )の中にサービスに対する引数を書きます。 あとはこれをコマンドと同じように実行すればメモ帳が移動します。基本的にはこれだけです。

ちなみにプラグインやサービスは他にも多くあり全て説明できないのでどんなサービスがあるかはプラグインと一緒に同封されているテキストファイルの説明を見てください。


もう少し具体的な使用例を見てみましょう。

◆ 小数点の計算

PowerProは整数同士の計算しかできません。そこで小数点の計算をするために使うのがFloatプラグインです。 とりあえず小数点同士の足し算をやってみましょう。

小数点の足し算をするFloatプラグインのサービスは「add」です。これは引数を9つまでとることができつまり一度に9つの小数点を足すことができるわけです。 例えば5.8と6.15と0.8を足して結果をxという変数に代入したいと思ったとすると

x = float.add(5.8, 6.15, 0.8)

と書けばいい・・・と思いきや実はこれは間違いです。何が違うかというと引数の書き方が少し違います。 小数点はダブルクォーテーションで囲わなくてはならないのです。つまり次のように書きます。

x = float.add("5.8", "6.15", "0.8")

もちろんxの中身は「12.75」となります。ちなみに整数はダブルクォーテーションで囲わなくてもよく

x = float.add(12, "5.8")

のように書くことができます。しかし整数もダブルクォーテーションで囲うようにするといいと思います。

他にもFloatプラグインにはサービスがあり掛け算、割り算などもできます。


◆ ファイルの読み書き

Fileプラグインを使うとファイルの読み書きをすることができます。ここでは簡単な使い方しかやりませんが他にもいろいろできます。

文字列をファイルに書き込むときはWriteAllサービスを使うといいでしょう。これは「writeall(path, var)」のような形でpathのところには 書き込みたいファイル名とパス(ないときは作られる)、varには書き込む文字列を指定します。例えばルートディレクトリにtest.txtというファイル名で 「テストです。」書き込みたいとすると

file.writeall("c:\test.txt", "テストです。")

とします。また「writeall(path, var, "a")」のようにして書くと文字列を追記することができます。 例えば先ほど書き込んだtest.txtに「追記です。」という文字列を追加しようと思ったとすると

file.writeall("c:\test.txt", "追記です。", "a")

のように書きます。

テキストファイルの読み込みをするときはReadAllサービスを使うと簡単でしょう。「readall(path)」のような形で使い、pathには 読み込みたいテキストファイルへのパスを指定します。読み込まれた文字列はreadallそのものが返してくるのでつまりは「str = readall(path)」 のような形で書くのが普通です。例えば先ほど作ったファイルを読み込むときは

str = file.readall("c:\test.txt")

のように書きます。読み込まれた文字列は変数strに入っています。debugなどでstrの中を見てみてください。


◆ Winampが再生中の曲名を取得する

Winampが再生中の曲名をPowerProのバーに表示できたらいいと思いませんか?ここはWinプラグインのちょっとした応用です。 他のプレーヤーでも使えるかもしれません。

ここではWinampが再生している曲名をWinampのキャプションに表示するように設定していると考えます。またキャプションの表示形式が 「再生中の曲名 - Winamp」のようになっているとします。人によってはタイトルがスクロールしていたりするかもしれませんがそのときは使えません。 さらにWinamp 2.xでないと使えません。Winamp 3でもできるとは思いますがとりあえず考えないことにします。

原理は簡単です。まずWinampのメインウィンドウのキャプションを取得します。そのキャプションには再生中の曲名が含まれていますが「 - Winamp」 が余計に入っています。だからこれを取り除いてしまい曲名だけにします。これだけです。早速スクリプトを見てみましょう。

wamp_title = win.caption("c=winamp v1.x")
wamp_title = remove(wamp_title, -9)

まずWinプラグインのCaptionサービスで指定したウィンドウのキャプションを取得します。「Caption(cl)」の形で使いclはキャプションリストです。 このキャプションリストには今回はWinampのメインウィンドウのクラス名を指定します(スクリプト3を参考)。なぜなら通常Winampは複数のウィンドウを持っていて単に実行ファイル名だけで 指定するとプレイリストなどのウィンドウのキャプションを取得してしまう可能性があるからです。メインウィンドウのクラスは「winamp v1.x」 とわかっているのでこのクラス名を指定すると確実にWinampのメインウィンドウのキャプションが取得できます。取得したキャプションはwamp_titleに入ります。 例えば現時点では「1. Llama Whippin' Intro - DJ Mike Llama - Winamp」のような感じでwamp_titleには文字列が入っています。

次にこのwamp_titleから「 - Winamp」を取り除かなければなりません。そこで文字列から指定した部分を取り除くRemoveを使います。 上のスクリプトの「remove(wamp_title, -9)」の「-9」はwamp_titleの文字列の最後から9文字取り除く、という意味です。負の数だと後ろから 文字列を切り取ります。「 - Winamp」は空白も含めて9文字なので-9と指定します。これを実行するとwamp_titleの中身はタイトルだけになります。 さっきの例では「1. Llama Whippin' Intro - DJ Mike Llama」のようになるはずです。

あとはこの文字列を好きなようにするだけです。例えばバーに表示したいと思ったらアイテムのNameのところに「*Info expr(wamp_title)」 のように書きます。しかしこれだけでは再生中のタイトルが更新されません。つまり何秒か置きに先のスクリプトを実行する必要があるのです。 タイマーなどにこのスクリプトを負荷がかからない程度に実行させるといいと思います。


他にもプラグインを使うといろいろ応用できるはずです。ちなみにプラグインは技術のある人なら作ることができます(私はないので作れませんが)。


スクリプト6へ  トップへ