Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > dl/win32ライブラリ > Win32APIクラス

class Win32API

クラスの継承リスト: Win32API < Object < Kernel < BasicObject

Abstract

特異メソッド

new(dllname, func, import, export)

DLL dllname をロードし、API func のオブジェクトを生成します。

第 3 引数 import には func の引数の型のリストを指定します。 nil の場合は引数なしと見なされます。

第 4 引数 export には func の戻り値の型を指定します。 nil の場合は戻り値なし (void) と見なされます。

第 3 引数 import と第 4 引数 export で 型を指定するには以下の文字列を用います。

"p"

ポインタ

"n", "l"

long

"i"

int

"v"

void

new(dllname, func, import, export = "0")

指定された関数を DL::Symbol オブジェクトとして生成します。

インスタンスメソッド

call(*args)
Call(*args)

API を呼び出します。 指定する引数と戻り値は Win32API.new の引数の指定に従います。 特にポインタを渡してそのポインタの指す領域に値が設定される場合は その領域をあらかじめ確保しておく必要があります。

例えば、引数のバッファに書き込む関数を呼び出すには以下のようにします。

api = Win32API.new('foo.dll', 'foo', 'p', 'v')
buf = "\0" * 256
api.call(buf)

ポインタの配列を渡す場合は以下のようにします。

api = Win32API.new('foo.dll', 'foo', 'p', 'v')
args = ["\0" * 256, "\0" * 256, "\0" * 256]
api.call(args.pack("p3"))
call(*args)
Call(*args)

[[DL::Symbol#call]] により関数を実行します。

定数

DLL

Methods

Classes