interop_getInvoker

指定したC-Style関数に対応するデリゲートを生成します


taiseiue | 2023-12-30

定義

名前空間: Alice.Interop
アセンブリ: Losetta.Runtime.dll
ソースコード: Alice.Interop.cs

interop_getInvoker(string,string,string,array,string,bool)

指定したC-Style関数に対応するデリゲートを生成します

AliceScript
namespace Alice.Interop;
public delegate interop_getInvoker(string procName, string libraryName, string returnType, array parameterTypes, string entryPoint = null, bool? useUnicode = null);
引数
procName 対象の関数の名前
libraryName 対象の関数が定義されているファイル名
returnType 関数の戻り値の型を表す文字列
parameterTypes 関数の引数の型を表す文字列を含む配列
entryPoint 対象の関数のエントリポイント。既定値はnullで、これを指定した場合はprocNameが使用されます。
useUnicode 呼び出しにUnicodeを使用する場合はtrue、ANSIを使用する場合はfalse、自動判別する場合はnull。既定値はnullです。
戻り値
delegate 指定したC-Style関数に対応するデリゲート

対応
AliceScript 3.0、4
AliceSister 3.0、4
Losetta 0.10、0.11

説明

この関数を使用すると、ネイティブ関数を一度定義することなくデリゲートに格納できます。

returnTypeparameterTypesに使用する文字列については、マーシャリングを参照してください。

C-Style関数をAliceScriptで使用する方法については、ネイティブ関数の呼び出しを参照してください。

対応する関数が見つからなかった場合は0x004 COULDNT_FIND_VARIABLE 外部に適切に定義された関数が見つかりませんでしたがスローされます。

次の例では、Win32APIで定義されているMessageBox関数を使用してメッセージボックスを表示します。

AliceScript
using Alice.Interop;

var msgBox = interop_getInvoker("MessageBox", "user32.dll", "INT", ["HWND", "LPCTSTR", "LPCTSTR", "UINT"], "MessageBoxW", true);

msgBox(0, "Hello,World!", "TestMessage", 0);