Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > dl/win32ライブラリ > Win32APIクラス
クラスの継承リスト: Win32API < Object < Kernel
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 で 型を指定するには以下の文字列を用います。
ポインタ
long
int
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]