Win32::OLE::Constモジュール(日本語チョウ訳) Ver. 0.14対応

by Hippo2000(2001/2/20)

Jan Duboisさんにはメールで了解をいただきました。

内容等が間違っていたら修正します。ご連絡ください。



名前

Win32::OLE::Const - TypeLibから定数定義を取り出す


概要

    use Win32::OLE::Const 'Microsoft Excel';
    printf "xlMarkerStyleDot = %d\n", xlMarkerStyleDot;

    my $wd = Win32::OLE::Const->Load("Microsoft Word 8\\.0 Object Library");
    foreach my $key (keys %$wd) {
        printf "$key = %s\n", $wd->{$key};
    }


説明

このモジュールはすべての定数を登録されたOLEタイプ・ライブラリからPerlプログラムで利用できるようにします。定数定義は関数としてインポートされ、コンパイル時の名前チェックが提供されます。多くの知らない関数を定義することを避けて、代わりとして定数をハッシュ・リファレンスとして返すこともできます。

関数/メソッド

use Win32::OLE::Const
useステートメントで直接、定数名と変数をユーザ名前空間にインポートするために使うことができます。
    use Win32::OLE::Const (TYPELIB,MAJOR,MINOR,LANGUAGE);

TYPELIB引数はタイプ・ライブラリをレジストリで探すための正規表現を指定します。この引数は暗黙のうちに、マッチングのスピードをほとんどの場合あげるように、頭に^がつけられることに注意してください。記述のどこであってもマッチするようにするには、".*Excel"のようなtypelib名を使ってください。TYPELIBだけが必須の引数です。

MAJOR と MINOR 引数はタイプ仕様の必要とされるバージョンを指定します。MAJOR引数が使われると、厳密にこのメジャー・バージョン番号をもったtypelibだけがマッチします。しかしMINOR引数は最小の受け入れることのできるマイナー・バージョンを指定します。MAJORが未定義であれば、MINORは無視されます。

LANGUAGE 引数が使われると、厳密にこのlanguage idを持っているtypelibだけがマッチします。

モジュールはtypelibを要求を満たす最も高いバージョン番号のtypelibを選択します。language idが指定されなければ、デフォルトのlanguage(0)が他のものよりも優先されます。

正しいPerl変数名つまり名前が以下の正規表現にマッチする:/^[a-zA-Z_][a-zA-Z0-9_]*$/ を持つ定数だけがエクスポートされることに注意してください。

 
Win32::OLE::Const->Load
Win32::OLE::Const->Load メソッドは定数定義のハッシュへのリファレンスを返します。
    my $const = Win32::OLE::Const->Load(TYPELIB,MAJOR,MINOR,LANGUAGE);

パラメータはuseの場合と同じです。

このメソッドは一般的にtypelibが英語以外の言語を使っているときや定数名にロケール特有のPerl変数名として許されない文字がはいっているときに好まれます。

もう1つの利点は、利用できるすべての定数を列挙することができることです。

loadメソッドはOLEオブジェクトもパラメータとして受け入れます。この場合、OLEオブジェクトは、それが持っているtypeライブラリを問い合わせられ、レジストリ検索はおこなわれなせん。面白いことに、これはより遅いようです。


最初の例では、すべてのExcel定数名をメインの名前空間にインポートし、xlMarkerStyleDot(-4118)の値を出力します。

    use Win32::OLE::Const ('Microsoft Excel 8.0 Object Library');
    print "xlMarkerStyleDot = %d\n", xlMarkerStyleDot;

2番目の例はすべてのWord定数をハッシュ・リファレンスとして返します:

    use Win32::OLE::Const;
    my $wd = Win32::OLE::Const->Load("Microsoft Word 8.0 Object Library");
    foreach my $key (keys %$wd) {
        printf "$key = %s\n", $wd->{$key};
    }
    printf "wdGreen = %s\n", $wd->{wdGreen};

最後の例はOLEオブジェクトをタイプライブラリを指定するために使います:

    use Win32::OLE;
    use Win32::OLE::Const;
    my $Excel = Win32::OLE->new('Excel.Application', 'Quit');
    my $xl = Win32::OLE::Const->Load($Excel);


作者(AUTHORS/COPYRIGHT)

このモジュールはWin32::OLEディストリビューションの一部です。


ホーム Perlの小技

ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。