=encoding euc-jp =head1 NAME Win32::OLE::Const - TypeLibから定数定義を取り出す =head1 SYNOPSIS 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}; } =head1 DESCRIPTION このモジュールはすべての定数を登録されたOLEタイプ・ライブラリからPerlプログラムで利用できるようにします。 定数定義は関数としてインポートされ、コンパイル時の名前チェックが提供されます。 知らない名前の関数をたくさん定義することを避けるために、定数をハッシュ・リファレンスとして返すこともできます。 =head2 Functions/Methods =over 8 =item use Win32::OLE::Const Cステートメントで直接、定数名と変数をユーザ名前空間にインポートするために使うことができます。 use Win32::OLE::Const (TYPELIB,MAJOR,MINOR,LANGUAGE); TYPELIB引数はタイプ・ライブラリをレジストリで探すための正規表現を指定します。 ほとんどの場合でマッチングのスピードが上がるように、この引数は暗黙のうちに頭にC<^>がつけられることに注意してください。 記述のどこであってもマッチするようにするには、 ".*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_]*$/ の正規表現にマッチする定数だけがエクスポートされることに注意してください。 =item Win32::OLE::Const->Load Win32::OLE::Const->Load メソッドは定数定義のハッシュへのリファレンスを返します。 my $const = Win32::OLE::Const->Load(TYPELIB,MAJOR,MINOR,LANGUAGE); パラメータは C の場合と同じです。 このメソッドは一般的にtypelibが英語以外の言語を使っているときや定数名にロケール特有のPerl変数名として許されない文字がはいっているときに好まれます。 もう1つの利点は、利用できるすべての定数を列挙することができることです。 loadメソッドはOLEオブジェクトもパラメータとして受け入れます。 この場合、OLEオブジェクトは、それが持っているタイプライブラリを問い合わせられ、レジストリ検索は全く行なわれません。 面白いことに、これはより遅いようです。 =back =head1 EXAMPLES 最初の例では、すべての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); =head1 AUTHORS/COPYRIGHT このモジュールは Win32::OLE ディストリビューションの一部です。 =cut