Ну вообще, получить информацию о текущем курсоре можно через функцию GetCursorInfo, но игры используют не стандартные системные функции, а специальные библиотеки(DirectX, OpenGL), которые работают с видео напрямую и могут не сообщить системе о смене курсора.
#Persistent
GetCursorInfo(CursorInfo)
; Функция извлекает информацию о текущем курсоре
; NumGet(CursorInfo,0,"int")- размер структуры в байтах
; NumGet(CursorInfo,4,"int")- показан курсор или скрыт
; NumGet(CursorInfo,8,"int")- дескриптор курсора
; NumGet(CursorInfo,12,"int")- координата x
; NumGet(CursorInfo,16,"int")- координата y
{
return DllCall("GetCursorInfo", "int", CursorInfo)
}
VarSetCapacity(CursorInfo, 20)
NumPut(20,CursorInfo)
GetCursorInfo(&CursorInfo)
cur:=NumGet(CursorInfo,8)
SetTimer Func, 200
return
Func:
NumPut(20,CursorInfo)
GetCursorInfo(&CursorInfo)
new:=NumGet(CursorInfo,8)
if (new<>cur)
{
cur:=new
; курсор изменился
}
ToolTip %cur%
return
если выше приведённый код не поможет, то посмотрите верно ли определяются координаты курсора и виден ли курсор с точки зрения ОС.