关于光标更改的通知

Notifications about cursor changes

是否可以获取鼠标光标变化的通知?我对在我的流程中引起的变化很感兴趣,但系统范围内的通知也一样好。由于我使用的是第三方库,因此可能有多种原因导致光标发生变化。

特别是,我想知道光标何时变为 IDC_HAND。在线阅读,似乎没有通知驱动的方法。

我目前的解决方案是检查鼠标光标是否与LoadCursor(nullptr, IDC_HAND)相同。然而:

据我所知,理想的情况是有一条 Windows 消息指示游标更改,我可以在哪个阶段执行 LoadCursor 句柄检查。是否有其他选择?

感谢您的宝贵时间和协助。

回复晚了,抱歉。根据 Raymond Chen 的反馈(非常感谢)和他的 post,我只为 EVENT_OBJECT_NAMECHANGE 事件(当鼠标光标改变时触发)设置了一个钩子:

SetWinEventHook(EVENT_OBJECT_NAMECHANGE, EVENT_OBJECT_NAMECHANGE, nullptr, WinEventProc, GetCurrentProcessId(), GetCurrentThreadId(), WINEVENT_INCONTEXT);

并侦听 OBJID_CURSOR 对象 ID:

void CALLBACK WinEventProc(
  HWINEVENTHOOK hWinEventHook,
  DWORD         event,
  HWND          hwnd,
  LONG          idObject,
  LONG          idChild,
  DWORD         dwEventThread,
  DWORD         dwmsEventTime
  )
{
  if (idObject == OBJID_CURSOR)
  {
    ...
  }
}