Cursor.Position
我的 WinForms 应用程序只需通过在某种带有计时器的循环中设置属性即可将鼠标光标移动到表单周围。
我希望这种移动一直持续到用户自己不使用鼠标移动它为止。一旦他或她这样做,我希望我的代码停止。
因此,我需要一种方法来区分用户生成的鼠标移动发送的鼠标移动与我的应用程序生成的鼠标移动。
Cursor.Position
我的 WinForms 应用程序只需通过在某种带有计时器的循环中设置属性即可将鼠标光标移动到表单周围。
我希望这种移动一直持续到用户自己不使用鼠标移动它为止。一旦他或她这样做,我希望我的代码停止。
因此,我需要一种方法来区分用户生成的鼠标移动发送的鼠标移动与我的应用程序生成的鼠标移动。
适用于 Windows 8 及更高版本的简单解决方案:使用该GetCurrentInputMessageSource
功能。
如果originId
是IMO_INJECTED
,则模拟输入。否则,它通常等于IMO_HARDWARE
。
如果使用 Win32 SendInput API 定位鼠标光标,则可以在MOUSEINPUT结构中设置自定义dwExtraInfo
值。
处理异步(已发布)消息时,您可以使用 Win32 API GetMessageExtraInfo来检索自定义值。