HSP(HSP3)からWin32 API関数を呼ぶ。
 そんな時にOSによっては対応してない関数というのが少なからず存在します。通常、対応してない(存在しない)関数が呼ばれると、HSPエラー38「外部DLLの呼び出しに失敗しました」となって、そのままプログラムは落ちてしまいます。


 ってなわけで、特定のWin32 API関数が動かしたOS環境に対応してるのかをスクリプトからチェックする方法の紹介。
 HSP標準のvarptr関数を利用します。HSPヘルプから引用すると、『p1に外部拡張命令(#funcで定義されているDLL呼び出し用の命令)を指定した場合には、実際に実行される外部関数のアドレスを返します。』の処理を利用します。


 対応環境なら0以外が返ります。



#include "user32.as"


 mes varptr(MessageBox)


 存在しない関数なら0が返ります。



#uselib "user32"
#func hoge "hoge" ; ありもしない関数


 mes varptr(hoge)