使用两只鼠标在Windows中执行完全不同的操作

我目前正在尝试开发一个应用程序,使用两只鼠标在Windows中执行完全不同的操作。 然而,在花了几天的时间之后,我开始怀疑我想要做什么甚至可以使用Windows API。 由于我远不是Windows API的专家,所以我想征询一下你的意见,以便知道我是否正确地走向了正确的方向,还是应该尝试以完全不同的方式去做(也许开发一个驱动程序?)。

这是我想要做的:想象一下,两只老鼠插在我的电脑上。 我想用第一个作为普通的鼠标,而第二个将被用来执行完全不同的操作。 例如,通过点击第二个鼠标左键,它会在Firefox中打开一个新的标签(发送一个CTRL + T命令给FireFox应用程序),当点击右键时,它会发送一个CTRL + C. 然后,向上移动第二个鼠标,将会放大,当向下移动时,Firefox页面会缩小(这样,屏幕上的鼠标光标将保持修复状态!)。 这个想法是要识别当前正在使用哪个应用程序(哪个应用程序有鼠标/键盘焦点),并根据它执行不同的操作。 因此,例如,第二次鼠标左键单击将在FireFox中生成CTRL + T,在WORD中生成CTRL + B,在记事本中生成CTRL + S(实际上,这个想法是随意参数化这些动作)。 所有这一切,而第一只老鼠必须继续作为一个普通的老鼠。

因此,理解我的应用程序将在后台运行并且决不会直接与用户交互(不需要GUI,因为它不需要用户input任何内容),这一点很重要。 其目的只是修改来自第二个鼠标的鼠标input,并将其他input(消息)发送到当前正在使用的应用程序。

到目前为止,我正在使用原始input。 我能够区分哪个鼠标正在使用,而且我可以在第二个鼠标上执行操作时将消息(特定于应用程序)发送到其他应用程序。 当第二个鼠标移动时,我甚至可以将光标locking在屏幕上(所以只有相应的消息被发送到感兴趣的应用程序!)。 但是,我无法阻止由鼠标发送到鼠标焦点的应用程序的button消息。 因此,例如,当在记事本中点击第二个鼠标右键时,发送(并且在记事本窗口中显示)我的特定命令(“aaa”,因为我只是为了简单而试着用字母),但是上下文记事本菜单也会打开…(因此也收到了WM_RBUTTONDOWN消息)。

我的问题是:怎样才能阻止鼠标button消息(( WM_RBUTTONDOWN ,等等…)被其他应用程序接收到第二个鼠标时使用?这是可能的吗?问题是(在我的理解)这些消息具有比WM_input messages更高的优先级…所以,当我在应用程序中读取WM_input消息并检测到从第二个鼠标按下button时,已经太晚了, WM_xBUTTONDOWN已经发送!)

我知道使用鼠标钩子,我可以阻止那些,但是,然后,没有办法区分消息的来源(当然,检测哪个鼠标是我的应用程序的主要观点)。

我已经尝试使用DirectInput8,但它不再支持几个鼠标的使用(Windows专门说使用原始input来达到这个效果)。

所以,我想通过知道你已经知道我很迷茫,不知道我想做甚么可以做到。 任何帮助将是多余的欢迎。

期待阅读您的答复。

Solutions Collecting From Web of "使用两只鼠标在Windows中执行完全不同的操作"

我正要提出钩子,但后来我读到你已经看到了。 我想,你的问题的最后一招是写你自己的驱动程序。 在Windows以通常的方式安装了第二个鼠标之后,您可以转到设备管理器并将鼠标的驱动程序更改为自己的驱动程序。

虽然开发一个驱动程序可能不会成为一个项目的一个附加任务。