http://hsp.tv/play/pforum.php?mode=pastwch&num=79662 を少し改良してみました。
#module ConvertToWindowID #uselib "user32.dll" #cfunc IsWindow "IsWindow" int #cfunc GetWindowLong "GetWindowLongA" int,int #func GetWindowThreadProcessId "GetWindowThreadProcessId" int, var #define GWL_USERDATA -21 #deffunc GetHwndToProcessID OwnThreadId=GetWindowThreadProcessId(hwnd,OwnProcessId) return #defcfunc IsOwnWindow int ownhwnd GetWindowThreadProcessId ownhwnd,ProcessId if ProcessId=OwnProcessId:bool=1:else:bool=0 return bool #defcfunc HwndToWinID int hwndID if IsWindow(hwndID)=0:return -1 if IsOwnWindow(hwndID)=1{ WinIDHwnd=GetWindowLong(hwndID,GWL_USERDATA) }else{ WinIDHwnd=-1 } return WinIDHwnd #defcfunc WinIDToHwnd int WinID WinsID=ginfo(3) gsel WinID HwndID=hwnd gsel WinsID return HwndID #global GetHwndToProcessID;←最初に実行する #packopt hide 1 #uselib "user32.dll" #cfunc WindowFromPoint "WindowFromPoint" int,int screen 0,400,240 screen 100,400,240,4 screen 150,400,240,4 gsel 0,1 repeat cls ;マウスカーソルがどのウィンドウIDに当たっているか調べる。自ウィンドウではない場合、-1が返る mes HwndToWinID(WindowFromPoint(ginfo_mx,ginfo_my)) wait 100 loop