区分用户生成的和我自己的应用程序生成的鼠标移动

时间:2014-01-14 09:29:08

标签: c# winforms winapi windows-messages message-loop

我的WinForms应用程序只需在某种循环中使用计时器设置Cursor.Position属性,就可以将鼠标光标移动到表单上。

我希望这个动作只能持续到用户不用鼠标移动它。一旦他或她这样做,我希望我的代码停止。

因此,我需要一种方法来区分用户生成的鼠标移动发送的鼠标移动与我的应用程序生成的鼠标移动。

2 个答案:

答案 0 :(得分:2)

如果您使用Win32 SendInput API定位鼠标光标,则可以在MOUSEINPUT结构中设置自定义dwExtraInfo值。

处理异步(已发布)邮件时,您可以使用Win32 API GetMessageExtraInfo来检索自定义值。

答案 1 :(得分:2)

Windows 8及更高版本的直接解决方案:使用GetCurrentInputMessageSource功能。

如果originIdIMO_INJECTED,则会模拟输入。否则,它通常等于IMO_HARDWARE