#comfunc

外部COM呼び出し命令登録

#comfunc 新規名称 インデックス タイプ名1,…

新規名称     : 命令として認識されるキーワード名
インデックス : メソッドindex値
タイプ名     : 引数のタイプを,で区切って指定します

解説

外部コンポーネント(COM)を呼び出すための新しい命令を登録します。
#comfuncは、 #usecom命令によって指定されたインターフェースのメソッドを命令として呼び出すための登録を行ないます。
以降は、 新規名称で指定された命令とCOMオブジェクト型の変数を組み合わせてコンポーネントを呼び出すことができます。

新規名称、インデックス、タイプをスペースで区切って書きます。
新規名称の直前に「global」を入れることで、 すべてのモジュールで永続的に利用することのできる命令を作成することができます。

タイプ名には、引数の詳細を記述します。
#deffunc命令と同様に、引数の型を「,」で区切って指定してください。
引数の数や、型の順番に制限はありません。
引数の型として使用できる文字列は以下の通りです。

   型      :  内     容
 -------------------------------------------------------------
   int     :  整数値(32bit)
   var     :  変数のデータポインタ(32bit)
   str     :  文字列ポインタ(32bit)
   wstr    :  unicode文字列ポインタ(32bit)
   double  :  実数値(64bit)
   float   :  実数値(32bit)
   pval    :  PVal構造体のポインタ(32bit)
   bmscr   :  (*)BMSCR構造体のポインタ(32bit)
   hwnd    :  (*)現在選択されているウィンドウのハンドル(HWND)
   hdc     :  (*)現在選択されているウィンドウのデバイスコンテキスト(HDC)
   hinst   :  (*)実行中のHSPインスタンスハンドル

(*)がついている項目は、 引数として指定する必要なく自動的に渡されるパラメーターを示しています。

例 :
	; シェルリンクオブジェクトのクラスID
	#define CLSID_ShellLink "{00021401-0000-0000-C000-000000000046}"
	; IShellLink インターフェースのインターフェースID
	#define IID_IShellLinkA "{000214EE-0000-0000-C000-000000000046}"

	#usecom IShellLinkA IID_IShellLinkA CLSID_ShellLink
	#comfunc IShellLink_SetPath 20 str

	newcom slink, IShellLinkA
	IShellLink_SetPath slink, "c:\\hsp261\\hsp2.exe"

上の例では、IShellLinkAインターフェースのIShellLink_SetPathをslinkという変数とともに呼び出しています。
#comfuncで登録された命令は、最初の引数が常に同じインターフェースを持つCOMオブジェクト型の変数になるので注意してください。

関連項目

#usecom外部COMインターフェースの指定
newcomCOMオブジェクト型変数の新規作成
delcomCOMオブジェクト型変数の破棄
querycomCOMオブジェクト型変数の作成

サンプル逆引き (2)

comtest1.hsp
comtest3.hsp

情報

バージョン3.5
作成日2017/09/13
著作者onitama
URLhttp://hsp.tv/
備考ver3.5標準命令
タイプ内蔵命令
グループプリプロセッサ命令
対応環境
  • Windows 版 HSP
  • コマンドライン版 HSP
hs ファイルhsphelp\i_prep.hs