2017-08-11 59 views
2

我想将某些鼠标点击消息发送到另一个程序的指定窗口。我目前使用WM_LBUTTONUPWM_LBUTTONDOWN消息,其工作正常。检查鼠标按钮是否在C++中交换了

无论用户的鼠标按钮设置如何,这些消息的执行方式都完全相同。反过来,我想知道用户是否从鼠标设置控制面板交换了鼠标按钮。

我研究发现SwapMouseButton功能,它工作正常,但我不想实际交换鼠标按钮,我只是想知道它是否以前交换过或没有。

从MSDN:

如果鼠标按钮的含义之前逆转,被调用的函数之前,返回值是非零。

我可以得到我想要的信息,但它也可以将它们恢复到鼠标按钮的原始状态。我只想检查而不是恢复到原始状态。

我目前调用这个函数,如:

SwapMouseButton(FALSE); 

我想知道的任何其他替代方式(类似SystemParametersInfo)只检查(不也恢复)是否鼠标按键由用户以前换。

基本上,我想要做的是根据用户的鼠标按钮意义来模拟主鼠标按钮单击和辅助鼠标按钮单击。

例如,当我模拟主鼠标按钮单击时,如果用户交换了鼠标按钮,则鼠标右键单击应该模拟,否则像往常一样左键单击。没有消息存在称为WM_PRIMARY...WM_SECONDARY...为我做我想做的。

在此先感谢。

+2

您提出了错误的问题,现在需要错误解决方案的帮助。 [您无法使用PostMessage模拟键盘输入](https://blogs.msdn.microsoft.com/oldnewthing/20050530-11/?p=35513)(相同的基本原则适用于鼠标输入)。您应该问的问题是:*“如何自动化UI?”*该问题的答案是:*“使用[UI自动化](https://msdn.microsoft.com/en-us/library/ windows/desktop/ee684009.aspx)“。*这样做的一个优点是,您不需要知道用户的本地鼠标按钮设置。 – IInspectable

+0

@IInspectable谢谢!我将删除PostMessage。您提供的链接非常有用。 :-) – GTAVLover

回答

5

您可以使用GetSystemMetricsSM_SWAPBUTTON参数值。

SM_SWAPBUTTON 23

非零,如果左和右鼠标按钮 被交换的含义;否则为0.

相关问题