うまく行きません。
どなたか解りましたらよろしくお願いします。
#module #uselib "user32.dll" #func f_GetWindowThreadProcessID "GetWindowThreadProcessId" sptr , sptr #cfunc c_GetWindowLong "GetWindowLongA" sptr , sptr #uselib "kernel32.dll" #func f_OpenProcess "OpenProcess" sptr , sptr , sptr #func f_CloseHandle "CloseHandle" sptr #cfunc c_GetLastError "GetLastError" #uselib "psapi.dll" #func f_GetModuleFileNameEx "GetModuleFileNameExA" sptr , sptr , sptr , sptr #define GWL_HINSTANCE 0xFFFFFFFA #define PROCESS_ALL_ACCESS 0x001F0FFF #deffunc GetExeFileName int gefn_hwnd_ , var gefn_filename_ dim returnx sdim gefn_filename_ , 2048 // Windowのインスタンスハンドル hMod = c_GetWindowLong( gefn_hwnd_ , GWL_HINSTANCE ) // プロセスのId f_GetWindowThreadProcessId gefn_hwnd_ , varptr( PId ) sledID = stat // プロセスを開く f_OpenProcess PROCESS_ALL_ACCESS , 1 , PId hProcess = stat f_CloseHandle hProcess if hProcess ! 0 { // ファイル名を取得 f_GetModuleFileNameEx hProcess , hMod , varptr( gefn_filename_ ) , 2048 slen = stat if slen = 0 { // lerr = c_GetlastError() returnx |= (1<<31) | (1<<0) mes " ×GetModuleFileNameEx 関数が失敗しています。" }else{ returnx = slen mes " ○問題は存在しません" } }else{ returnx |= (1<<31) | (1<<1) mes " ×OpenProcess 関数が失敗しています。" } mes " ▲ stat" mes strf(" hProcess %d " , hProcess ) mes strf(" ProcessID %d " , PId ) mes strf(" sledID %d " , sledID ) mes strf(" hMod %d " , hMod) mes "" mes strf(" FileNameLen %d " , slen ) mes strf(" filename %s " , strmid( gefn_filename_ , 0 , 100 ) ) return returnx #global GetExeFileName hwnd , filename mes filename