c语言鼠标左右键怎么互换,用C#实现鼠标左右键的切换

818ca582eb69acc211949733cb4feb30.png

在平时用电脑的过程中,我喜欢隔段时间就把鼠标左右调换一下,一来是想让自己一侧的肩、手臂、手腕能得到休息,尽量避免因长期固定姿势使用鼠标而带来的身体不适,另一方面也因为我本来就是个左撇子,喜欢尝试给两只手均等的做事机会。

当然,自从我给电脑同时接上左右两只鼠标以后,来回调换鼠标是避免了(据我所知,有在电脑上接三四只鼠标的,真是厉害!),但系统对于鼠标左右键的安排却不听我的调换,还要费力地去控制面板中设置一番,非常麻烦。因此我想,何不写几行代码,让鼠标左右键能在最短的时间内左右切换呢?这主意不错!OK,马上到MSDN里查找一番,十几分钟写出了下面这个小程序。

1. SwapMouseButton

根据MSDN所述,可以通过调用SwapMouseButton这一API来实现鼠标左右键功能互换,Windows控制面板中的相关设置也是通过调用该API来实现的。该API存在于user32.dll文件中,它的原型是:

BOOL SwapMouseButton(

BOOL fSwap

);

我们可以在.NET工程中通过P/Invoke轻松声明对该API的调用。我写的调用声明如下:

// P/Invoke declarations

[DllImport("user32.dll")]

private extern static bool SwapMouseButton(bool fSwap);

其中,fSwap是需要传入的参数,当它的值为true时,系统会把鼠标左右键功能进行互换(即换成左手鼠标);当它的值为false时,系统会把鼠标左右键功能还原为默认状态(即右手鼠标)。因此,当我想使用左手鼠标时,只需向SwapMouseButton方法传入一个true变量即可实现,非常方便。

2. SystemParametersInfo

除了调用SwapMouseButton来实现鼠标左右值功能切换之外,Windows还提供了另外一个实现同样效果的API:SystemParametersInfo。根据MSDN,该API的原型是:

BOOL SystemParametersInfo(

UINT uiAction,

UINT uiParam,

PVOID pvParam,

UINT fWinIni

);

用C#可以进行如下声明:

[DllImport("user32.dll")]

private extern static int SystemParametersInfo(uint uiAction, uint

uiParam, IntPtr pvParam, uint fWinIni);

其中,uiAction指定一个需要获取的系统参数,如屏幕大小、分辨率、鼠标配置等,如果传入参数SPI_SETMOUSEBUTTONSWAP就可以用来设置鼠标功能切换;当向uiParam参数传入正值时,系统就会把鼠标左右键功能进行互换(即换成左手鼠标),当向uiParam传入0时,系统还会把鼠标功能还原成默认状态(即还原为右手鼠标)。

由此,我们需要在uiAction位置传入SPI_SETMOUSEBUTTONSWAP。不过很明显,SPI_SETMOUSEBUTTONSWAP只是C语言中#define编译预定义指令所定义出的一个常量,我们必须在C#代码中对它进行重新定义。OK,打开Winuser.h头文件,在其中搜索SPI_SETMOUSEBUTTONSWAP,找到如下定义(位于8623行):

#define SPI_SETMOUSEBUTTONSWAP 33

可见,SPI_SETMOUSEBUTTONSWAP定义的是整型值33,这样我们就可以在C#中做出如下定义:

private const uint SPI_SETMOUSEBUTTONSWAP = 33;

2829f2ca24f0d0090cbba57f30759f23.png

用C#实现鼠标左右键的切换.doc

下载Word文档到电脑,方便收藏和打印[全文共1304字]

编辑推荐:

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

下载Word文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值