c – 使用两个鼠标在Windows中执行完全不同的 *** 作

c – 使用两个鼠标在Windows中执行完全不同的 *** 作,第1张

概述我目前正在尝试开发一个应用程序,使用两个鼠标在 Windows中执行完全不同的 *** 作.然而,在花了几天之后,我开始想知道我想做什么甚至可以使用Windows API.由于我不是Windows API的专家,我想知道我是否正在朝着正确的方向前进,或者我是否应该尝试完全不同的方式(也许开发一个驱动程序?). 这就是我想要做的:想象一下,我的电脑插入了两只老鼠.我想将第一个用作常规鼠标,而第二个用于执行完 我目前正在尝试开发一个应用程序,使用两个鼠标在 Windows中执行完全不同的 *** 作.然而,在花了几天之后,我开始想知道我想做什么甚至可以使用windows API.由于我不是windows API的专家,我想知道我是否正在朝着正确的方向前进,或者我是否应该尝试完全不同的方式(也许开发一个驱动程序?).

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

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

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

我的问题是:当使用第二只鼠标时,如何阻止其他应用程序接收鼠标按钮消息((WM_RbuttonDOWN,等等)?是否可能?问题是(据我的理解)那些消息比WM_input消息具有更高的优先级…所以当我在应用程序中读取WM_input消息并检测到按钮是从第二个鼠标按下时,已经太晚了,WM_xbuttonDOWN已经发送了!)

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

我也试过使用Directinput8,但它不再支持几个鼠标的使用(windows专门说使用原始输入来达到此效果).

所以,我想知道你已经知道我已经迷失了,并且不知道我想做什么甚至是可以实现的.任何帮助都非常受欢迎.

期待阅读您的回复.

解决方法 我准备建议钩子,但后来我读到你已经调查过了.我想,问题的最后一招是编写自己的驱动程序.
windows以常规方式安装第二个鼠标后,您可以转到设备管理器并将要“重新利用”的鼠标驱动程序更改为您自己的驱动程序.

虽然,开发一个驱动程序可能不是人们在项目中作为一项任务所做的事情.

总结

以上是内存溢出为你收集整理的c – 使用两个鼠标在Windows中执行完全不同的 *** 作全部内容,希望文章能够帮你解决c – 使用两个鼠标在Windows中执行完全不同的 *** 作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1225096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存