/*ご参考(ググれば全ての意味や値は必ずHITします:検索キーワードの工夫も必要)*/
;①必要なAPIの定義されているDLLを探す
;②引数の設定は全てsptrで良い
#uselib "kernel32"
#func global GetCurrentProcess "GetCurrentProcess"
#func global GetModuleFileNameA "GetModuleFileNameA" sptr,sptr,sptr
#uselib "psapi"
#func global EnumProcesses "EnumProcesses" sptr,sptr,sptr
#func global EnumProcessModules "EnumProcessModules" sptr,sptr,sptr,sptr
#func global GetModuleInformation "GetModuleInformation" sptr,sptr,sptr,sptr
;③変数の型や構造体や低数値をHSPの型に当てはめる
dim hProcess ;HANDLE hProcess;
dim ModuleHandles,1000 ;HMODULE ModuleHandles[1000];
dim ModuleNum ;DWORD ModuleNum;
dim ReturnSize ;DWORD ReturnSize;
sdim FileName,260 ;char FileName[1000];
dim ModInfo,3 ;MODULEINFO ModInfo;
dim HMODULE ;
/*
typedef struct _MODULEINFO {
LPVOID lpBaseOfDll;
DWORD SizeOfImage;
LPVOID EntryPoint;
} MODULEINFO, *LPMODULEINFO;
*/
;④制御文や表示命令をHSPの命令に置き換える
;⑤値を返すAPI記法の括弧を外してSTATで返り値を受け取る形にする
;⑥API引数の値を受け取る部分はvarptrでポインター渡しにする
HMODULE = 4
GetCurrentProcess
hProcess = stat
EnumProcessModules hProcess,varptr(ModuleHandles),1000,varptr(ReturnSize)
ModuleNum = ReturnSize/HMODULE
repeat ModuleNum
GetModuleFileNameA ModuleHandles(cnt),varptr(FileName),260
GetModuleInformation hProcess,ModuleHandles(cnt),varptr(ModInfo),4*3
mes FileName
mes ModInfo.0
mes ModInfo.1
mes ModInfo.2
loop
;⑦終わり