检查C ++中是否交换了鼠标按钮

时间:2017-08-11 06:00:47

标签: c++ winapi click mouseevent

我想将一些鼠标点击消息发送到另一个程序的指定窗口。我目前使用WM_LBUTTONUPWM_LBUTTONDOWN消息,其工作正常。

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

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

来自MSDN:

  

如果先前反转鼠标按钮的含义,则在调用该函数之前,返回值为非零。

我可以通过这种方式获取我想要的信息,但它也会将它们恢复到鼠标按钮的原始状态。我只想检查而不是恢复到原始状态。

我目前称这个函数为:

SwapMouseButton(FALSE);

我想知道任何其他替代方法(例如SystemParametersInfo)只检查(不是还要恢复)鼠标按钮之前是否已被用户交换过。

基本上,我想要做的是根据用户的鼠标按钮含义模拟鼠标主按钮点击和鼠标左键单击。

例如,当我模拟主鼠标按钮单击时,如果用户已交换鼠标按钮,则应单击鼠标右键,否则将照常离开。没有名为WM_PRIMARY...WM_SECONDARY...的消息让我按照自己的意愿行事。

提前致谢。

1 个答案:

答案 0 :(得分:7)

您可以将GetSystemMetricsSM_SWAPBUTTON参数值一起使用。

  

SM_SWAPBUTTON 23

     

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