外部DLL呼び出し命令登録
#func 新規名称 "関数名" タイプ名1,…
外部DLLを呼び出すための新しい命令を登録します。 先に#uselib命令により外部DLL名を指定しておく必要があります。 新規名称、関数名、タイプをスペースで区切って書きます。 関数名は、"関数名"のようにダブルクォートで囲むことで、 DLLの完全なエク スポート名を記述することができます。 ダブルクォートで囲んでいない場合は、「_関数名@16」というVC++のエクスポ ート規約に基づいた名前に変換されます。 タイプ名には、引数の詳細を記述します。 #deffunc命令と同様に、引数の型を「,」で区切って指定してください。 引数の数や、型の順番に制限はありません。 引数の型として使用できる文字列は以下の通りです。 型 : 内 容 ------------------------------------------------------------------ int : 整数値(32bit) var : 変数のデータポインタ(32bit) str : 文字列ポインタ(32bit) wstr : unicode文字列ポインタ(32bit) sptr : ポインタ整数値または文字列のポインタ(32bit) wptr : ポインタ整数値またはunicode文字列のポインタ(32bit) double : 実数値(64bit) label : ラベルポインタ(32bit) float : 実数値(32bit) pval : PVal構造体のポインタ(32bit) bmscr : BMSCR構造体のポインタ(32bit) comobj : COMOBJ型変数のデータポインタ(32bit) prefstr : システム変数refstrのポインタ(32bit) pexinfo : EXINFO構造体のポインタ(32bit) nullptr : ヌルポインタ(32bit) (*)がついている項目は、 引数として指定する必要なく自動的に渡されるパラ メーターを示しています。 以下は、4つの引数を指定して実行する例です。 例 : #uselib "test.dll" #func test "_func@16" var,int,int.int test a,1,2,3 ; test.dllのfunc(&a,1,2,3)が呼び出される タイプに数値を指定した場合は、ver2.5以降のDLLタイプ指定と互換性のある 引数が自動的に設定されます。ただし、いくつか互換性のない指定値がありま す。その場合は、コンパイル時にエラーとして報告されます。 ver2.5とは以下の点で互換性の注意が必要です。 ・BMSCR構造体は、flagからcolorまでのフィールドのみ参照できます。 ・PVal構造体は、ver2.5のPVAL2構造体と互換があります。 ・PVal構造体のflagフィールド(型タイプ値)やlenフィールド(配列情報)を DLL側で書き換えることはできません。 ・PVal構造体から文字列型の配列変数にアクセスすることはできません。 これ以外の点においては、HSP ver2.5と同等の情報が受け渡されます。 関数名の前に「onexit」を入れることにより、終了呼び出し関数として登録す ることができます。 例 : #func test onexit "_func@16" str,int,int 上の例では、アプリケーション終了時に自動的に"_func@16"が呼び出されます。
バージョン | 3.0 |
作成日 | 2004/10/12 |
著作者 | onitama |
URL | http://www.onionsoft.net/ |
備考 | ver3.0標準命令 |
タイプ | 内蔵命令 |
グループ | プリプロセッサ命令 |
hs ファイル | hsphelp\i_prep.hs |