名前¶
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 ディストリビューションの一部です。