More ... | HSP3用loadlib互換ライブラリ
廃止されたloadlib命令の互換ライブラリです。 loadlib.as; ------------------------------------------------------------------------ ; For Hot Soup Processor 3.0 ; これは廃止されたloadlib命令を使えるようにするための ; ライブラリです。 ; ------------------------------------------------------------------------ #ifndef INC__LOADLIB_AS #define INC__LOADLIB_AS #module loadlib ; 内部で使用するWinAPI関数群 #uselib "kernel32.dll" #func ll_LoadLibrary "LoadLibraryA" sptr #func ll_GetProcAddress "GetProcAddress" int, sptr #func ll_FreeLibrary "FreeLibrary" int #func ll_lstrcpy "lstrcpyA" sptr, sptr ; ------------------------------------------------------------------------ ; ll_return - 戻り値を設定 ; ------------------------------------------------------------------------ #deffunc ll_return@loadlib int p1 ret = p1 defret = p1 return ; ------------------------------------------------------------------------ ; ll_bin ; ------------------------------------------------------------------------ ;#deffunc ll_bin var v1, str s1 ; return ; ------------------------------------------------------------------------ ; ll_call ; ------------------------------------------------------------------------ ;#deffunc ll_call ; return ; ------------------------------------------------------------------------ ; ll_callfnv ; ------------------------------------------------------------------------ #deffunc ll_callfnv int p1 ll_return callfunc(void, p1, 0) return 0 ; ------------------------------------------------------------------------ ; ll_callfunc ; ------------------------------------------------------------------------ #deffunc ll_callfunc var v1, int p1, int p2 ll_return callfunc(v1, p2, p1) return 0 ; ------------------------------------------------------------------------ ; ll_dll ; ------------------------------------------------------------------------ #deffunc ll_dll str s1 if szdll = s1: return sdll = s1 gosub *DllUninit return 0 ; ------------------------------------------------------------------------ ; ll_free ; ------------------------------------------------------------------------ #deffunc ll_free gosub *DllUninit return 0 ; ------------------------------------------------------------------------ ; ll_func ; ------------------------------------------------------------------------ ;#deffunc ll_func str s1 ; return ; ------------------------------------------------------------------------ ; ll_getproc ; ------------------------------------------------------------------------ #deffunc ll_getproc var v1, str s1, int p1 ll_GetProcAddress p1, s1 v1 = stat return stat == 0 ; ------------------------------------------------------------------------ ; ll_getptr ; ------------------------------------------------------------------------ #deffunc ll_getptr var v1 ll_return varptr(v1) return 0 ; ------------------------------------------------------------------------ ; ll_libfree ; ------------------------------------------------------------------------ #deffunc ll_libfree int p1 ll_FreeLibrary p1 return stat == 0 ; ------------------------------------------------------------------------ ; ll_libload ; ------------------------------------------------------------------------ #deffunc ll_libload var v1, str s1 ll_LoadLibrary s1 v1 = stat return stat == 0 ; ------------------------------------------------------------------------ ; ll_n ; ------------------------------------------------------------------------ ;#deffunc ll_n int p1, int p2 ; return ; ------------------------------------------------------------------------ ; ll_p ; ------------------------------------------------------------------------ ;#deffunc ll_p var v1, int p1 ; return ; ------------------------------------------------------------------------ ; ll_peek ; ------------------------------------------------------------------------ #deffunc ll_peek var v1, int p1, int p2 dupptr t1, p1, 1, 2, if p2 <= 0: v1 = t1: else: memcpy v1, t1, p2 return 0 ; ------------------------------------------------------------------------ ; ll_peek1(2, 4) ; ------------------------------------------------------------------------ #define ll_peek1(%1,%2) ll_peek %1, %2, 1 #define ll_peek2(%1,%2) ll_peek %1, %2, 2 #define ll_peek4(%1,%2) ll_peek %1, %2, 4 ; ------------------------------------------------------------------------ ; ll_poke ; ------------------------------------------------------------------------ #deffunc ll_poke var v1, int p1, int p2 if p2 <= 0{ ll_lstrcpy p1, varptr(v1) } else { dupptr t1, p1, p2, 2 memcpy t1, v1, p2 } return 0 ; ------------------------------------------------------------------------ ; ll_poke1(2, 4) ; ------------------------------------------------------------------------ #define ll_poke1(%1,%2) ll_poke %1, %2, 1 #define ll_poke2(%1,%2) ll_poke %1, %2, 2 #define ll_poke4(%1,%2) ll_poke %1, %2, 4 ; ------------------------------------------------------------------------ ; ll_ret ; ------------------------------------------------------------------------ #deffunc ll_ret var v1 v1 = ret return 0 ; ------------------------------------------------------------------------ ; ll_retset ; ------------------------------------------------------------------------ #deffunc ll_retset var v1 dup defret, v1 return 0 ; ------------------------------------------------------------------------ ; ll_s ; ------------------------------------------------------------------------ ;#deffunc ll_s str s1, int n1 ; return ; ------------------------------------------------------------------------ ; ll_str ; ------------------------------------------------------------------------ ;#deffunc ll_str var v1, int p1, int p2 ; return ; ------------------------------------------------------------------------ ; ll_type ; ------------------------------------------------------------------------ ;#deffunc ll_type str s1, int p1 ; return ; ------------------------------------------------------------------------ ; ll_z ; ------------------------------------------------------------------------ ;#deffunc ll_z int p1, int p2 ; return ; ------------------------------------------------------------------------ ; hDLLの解放 ; ------------------------------------------------------------------------ *DllUninit if hDLL: ll_FreeLibrary hDLL: hDLL = 0 gosub *VarInit return ; ------------------------------------------------------------------------ ; 変数の初期化 ; ------------------------------------------------------------------------ *VarInit return #global #endif ; !defined(INC__LOADLIB_AS) |