libwin32-0.26 > Win32::OLE::Const

名前

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プログラムで利用できるようにします。 定数定義は関数としてインポートされ、コンパイル時の名前チェックが提供されます。 知らない名前の関数をたくさん定義することを避けるために、定数をハッシュ・リファレンスとして返すこともできます。

Functions/Methods

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を選択します。 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オブジェクトは、それが持っているタイプライブラリを問い合わせられ、レジストリ検索は全く行なわれません。 面白いことに、これはより遅いようです。

最初の例では、すべての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 ディストリビューションの一部です。