Ruby 3.3 リファレンスマニュアル > ライブラリ一覧 > win32oleライブラリ > WIN32OLEクラス
クラス・モジュールの継承リスト: WIN32OLE < Object < Kernel < BasicObject
OLEオートメーションサーバをRubyで操作するためのクラスです。
Windowsの多くのアプリケーションやライブラリは、COMと呼ばれるAPI群を利用して他のプログラムから操作できます。WIN32OLEがサポートしているのは、 COMのAPIのうち、特にインタープリタ用のインターフェイスであるOLEオートメーション(IDispatchインターフェイス)とそれに付随するリフレクション用のインターフェイスです。
これらのインターフェイスをサポートしている代表的なWindowsアプリケーションに、Office、IE、iTunes、Illustratorがあります。また、WMI、WshShellなどのライブラリを利用してWindowsの情報を操作することも可能です。これらのプログラムをOLEオートメーションサーバと呼びます。
WIN32OLEオブジェクトは、OLEオートメーションサーバが提供するメソッドやプロパティ(Rubyの属性に対応)をスクリプトから呼び出す手段を提供します。呼び出しには、Rubyのオブジェクトと同様にオブジェクトに続けて「.」とメソッド名、必要であれば引数のリストを記述します。最後の引数にHashを指定した場合は、名前付き引数としてキーにパラメータ名、値に引数を指定できます。
require 'win32ole' excel = WIN32OLE.new('Excel.Application') workbook = excel.Workbooks.Open('workbook.xls') workbook.PrintOut workbook.Close(:SaveChanges => false) excel.Quit
なお、OLEオートメーションの仕様ではメソッド名は大文字と小文字を区別しません。そのため、以下のようにOLEオートメーションサーバのメソッド名は小文字で記述しても構いません。
require 'win32ole' excel = WIN32OLE.new('Excel.Application') workbook = excel.workbooks.open('workbook.xls') workbook.printout workbook.close(:SaveChanges => false) excel.quit
注)以下の記述はWIN32OLEの将来のバージョンの仕様を規定するものではありません。
WIN32OLEはシングルスレッドモードでCOMとインターフェイスします。このため、 ruby 1.9以降のRubyのThreadとネイティブスレッドが1対1で対応する実行環境ではスレッドをまたがる呼び出しはエラーとなります。
excel = WIN32OLE.new('Excel.Application') Thread.start do workbook = excel.Workbooks.Open('workbook.xls') #=> HRESULT error code:0x800401f0 workbook.PrintOut workbook.Close(:SaveChanges => false) end.join excel.Quit
発生するエラーはThreadの実行方法によって 0x800401f0(CO_E_NOTINITIALIZED)または0x8001010e(RPC_E_WRONG_THREAD)です。
定義 | 説明 | |
---|---|---|
codepage -> Integer
|
WIN32OLEがOLEオートメーションのインターフェイスに利用するコードページを取得します。 |
|
codepage=(cp) -> nil
|
WIN32OLEがOLEオートメーションのインターフェイスに利用するコードページを設定します。 |
|
connect(ole) -> WIN32OLE
|
現在実行中のOLEオートメーションサーバに接続します。 |
|
const_load(ole, mod = WIN32OLE) -> ()
|
OLEオートメーションサーバが保持する定数を読み込み、指定されたモジュールに組み込みます。 |
|
create_guid -> String
|
GUID(グローバル一意識別子:Global Unique Identifier)を生成します。 |
|
locale -> Integer
|
WIN32OLEがオートメーション呼び出し時に設定するロケール識別子(LCID)を取得します。 |
|
locale=(lcid) -> nil
|
WIN32OLEがオートメーション呼び出し時に設定するロケール識別子(LCID)を設定します。 |
|
new(server, host=nil) -> WIN32OLE
|
OLEオートメーションサーバを生成します。 |
|
ole_free(aWIN32OLE) -> Integer
|
引数で指定したオブジェクトを解放します。 |
|
ole_reference_count(aWIN32OLE) -> Integer
|
引数で指定したオブジェクトの現在の参照カウント値を返します。 |
|
ole_show_help(obj, helpcontext = nil) -> ()
|
WIN32OLEオブジェクトのヘルプファイルを表示します。 |
定義 | 説明 | |
---|---|---|
ARGV -> [object]
|
直前のメソッド呼び出しの引数を格納した配列です。 |
|
CP_ACP -> Integer
|
Windows既定のANSIコードページ(0)を示します。 |
|
CP_MACCP -> Integer
|
Macintoshコードページ(2)を示します。 |
|
CP_OEMCP -> Integer
|
OEMコードページ(1)を示します。 |
|
CP_SYMBOL -> Integer
|
文字コードの変換にシンボルを利用することを示します(42)。 |
|
CP_THREAD_ACP -> Integer
|
現在実行中のスレッドの既定のコードページ(3)を示します。 |
|
CP_UTF7 -> Integer
|
文字コードの変換にUTF-7を利用することを示します(65000)。 |
|
CP_UTF8 -> Integer
|
文字コードの変換にUTF-8を利用することを示します(65001)。 |
|
LOCALE_SYSTEM_DEFAULT -> Integer
|
システム既定のロケールを示すLCID(0x0800)です。WIN32OLEがオートメーションを利用する場合の既定値です。 |
|
LOCALE_USER_DEFAULT -> Integer
|
ユーザ既定のロケールを示すLCID(0x0400)です。 |
|
VERSION -> String
|
Major.Minor.Patch形式のWIN32OLEのバージョン番号を示す文字列です。 |
!
!=
__id__
__send__
instance_eval
instance_exec
singleton_method_added
singleton_method_removed
singleton_method_undefined
!~
<=>
==
===
_dump
class
clone
define_singleton_method
display
enum_for
eql?
equal?
extend
freeze
frozen?
hash
initialize
initialize_copy
inspect
instance_of?
instance_variable_defined?
instance_variable_get
instance_variable_set
instance_variables
is_a?
itself
marshal_dump
marshal_load
method
methods
nil?
object_id
pretty_inspect
pretty_print
pretty_print_cycle
pretty_print_inspect
pretty_print_instance_variables
private_methods
protected_methods
psych_to_yaml
public_method
public_methods
public_send
remove_instance_variable
respond_to?
respond_to_missing?
send
singleton_class
singleton_method
singleton_methods
tap
then
to_a
to_ary
to_hash
to_int
to_io
to_proc
to_regexp
to_s
to_str
.yaml_tag
::ARGF
::DATA
::ENV
::RUBY_COPYRIGHT
::RUBY_DESCRIPTION
::RUBY_ENGINE
::RUBY_ENGINE_VERSION
::RUBY_PATCHLEVEL
::RUBY_PLATFORM
::RUBY_RELEASE_DATE
::RUBY_REVISION
::RUBY_VERSION
::SCRIPT_LINES__
::STDERR
::STDIN
::STDOUT
::TOPLEVEL_BINDING