加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 06:53:47 所属栏目:百科 来源:网络整理
导读:我目前正在尝试开发一个应用程序,使用两个鼠标在 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以常规方式安装第二个鼠标后,您可以转到设备管理器并将要“重新利用”的鼠标驱动程序更改为您自己的驱动程序.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读