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

class Win32API

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

要約

目次

特異メソッド
new new
インスタンスメソッド
Call call Call call
定数
DLL

特異メソッド

new(dllname, func, import, export = "0")[permalink][rdoc]

[TODO]

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

new(dllname, func, import, export)[permalink][rdoc]

[TODO]

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

インスタンスメソッド

call(*args)[permalink][rdoc]
Call(*args)

[TODO]

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)[permalink][rdoc]
Call(*args)

[TODO]

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

定数

DLL[permalink][rdoc]

[TODO]