使用C#: 自动切换鼠标的左右手习惯
不知道我得的是鼠标手,还是肩周炎。
长时间右手(或者左手)使用鼠标的话,那只胳膊便会不自在。
于是便有了切换鼠标主次要键的需求。
【控制面板->鼠标】有更改它的设置,可点来点去让我觉得不够方便。
我需要的是“一个命令就能搞定它”,这样我就可以在命令行,或者程序加载器里面方便的运行他。
下面的代码便是要实现这一需求:
他是一个命令行程序。如果当前鼠标是右手习惯,则将鼠标习惯设置为左手,反之设置成右手习惯。
实现代码如下:
- using System;
- using System.Runtime.InteropServices;
- using Microsoft.Win32;
- namespace SwapMouseModel
- {
- class Program
- {
- [DllImport("user32")]
- public static extern int SwapMouseButton(int bSwap);
- [DllImport("user32")]
- public static extern int GetSystemMetrics(int nIndex);
- //public readonly static int SM_SWAPBUTTON = 23;
- public const int SM_SWAPBUTTON = 23;
- public static void Main(string[] args)
- {
- var key = Registry.CurrentUser.CreateSubKey("Control Panel\\Mouse\\");
- if (GetSystemMetrics(SM_SWAPBUTTON) == 0)
- {
- //case: right hand model, change to left hand model.
- SwapMouseButton(1);
- key.SetValue("SwapMouseButtons", "1", RegistryValueKind.String);
- }
- else
- {
- //case: left hand model, change to right hand model.
- SwapMouseButton(0);
- key.SetValue("SwapMouseButtons", 0, RegistryValueKind.String);
- }
- Console.WriteLine("end");
- //Console.ReadLine();
- }
- }
- }
总结下对C#新认识:
1. static与const不能同时修饰一个变量
类成员是const就自动是static。因此或者只用const, 或者可以用readonly static
通过该链接可以展开查看“windows关于mouse”的api。
另外注意,该方法不会修改注册表。所以为了重启后修改依然有效,需要另行保存注册表设置。
通过该链接可以展开查看如何获得“其他类似的属性”
4. C#中可以使用var。
Google到的参考链接:
http://www.theeldergeek.com/forum/lofiversion/index.php?t10400.html
http://stackoverflow.com/questions/653911/swapping-left-and-right-mouse-button-in-net
使用C#: 自动切换鼠标的左右手习惯的更多相关文章
- JavaScript、tabel切换完整版—自动切换—鼠标移入停止-移开运行
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- bootstrap tab切换如何让鼠标移动自动切换内容
bootstrap集成了很多功能,比如nav-tabs组件,可以将相似的内容集中在一个区块中展示.bootstrap tab切换默认是要点击才会切换的,如何实现鼠标移动就自动切换呢?如下图所示,光标移 ...
- HTML+JS+DOM【选项卡自动切换】
最终效果图(鼠标无操作会自动切换选项卡): <!DOCTYPE html> <html> <head> <meta charset="gb2312& ...
- 【温故而知新-Javascript】图片效果(图像震动效果、闪烁效果、自动切换图像)
1.当鼠标指针经过图像时图像震动效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...
- 页面多语系自动切换-.resx
实现这个需要应用到微软提供的本地资源文件Resources,实际上就是一种key value的形式. 语言自动切换原理有两种 读取浏览器的语言首选项 根据IP网段进行识别.比如有的人通过VPN连接到 ...
- tabs自动切换功能的实现
<html><head><!-- Bootstrap 核心 CSS 文件 --> <link rel="stylesheet" href= ...
- html+css+jQuery+JavaScript实现tab自动切换功能
tab1.html内容 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...
- jquery 图片自动切换
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JQury自动切换图片
[标签]Jquery图片自动切换<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...
随机推荐
- 【html】页面制作规范文档
每天都在写html/css/js代码,总结的一些页面制作的规范 文件命名规范 1) 文件目录.文件名称统一用小写的英文字母.数字.下划线组合,文件名要与表现的内容相近,不到万不得已不要以拼音作为名称, ...
- Delphi 为什么它提示PCHAR是不安全的类型呢 Unsafe type 'PChar'
DELPHI7已经考虑到了移植到点NET的问题,在点NET里,指针是不安全的.至于为什么有的人遇到,有的人没有遇到,那是因为各人的编译选项不同.在Project菜单下选Options“Compiler ...
- 解决:Unable to connect to repository https://dl-ssl.google.com/android/eclipse/site.xml
ailed to fectch URl https://dl-ssl.google.com/android/repository/addons_list.xml, reason: Connection ...
- iOS 7 自定义Back按钮 与 Pop interactive gesture 问题
1.自定义Back按钮 iOS中很多时候我们都会自定义返回按钮,也是一件easy的事,类似如下: // 返回按钮 1 - (void)showNavBackButton { UIButton *bac ...
- python测试基于websocket协议的即时通讯接口
随着html5的广泛应用,基于websocket协议的即时通讯有了越来越多的使用场景,本文使用python中的websocket-client模块来做相关的接口测试 import webclient ...
- STM32的JTAG、SWD和串口下载的问题
最近有一个项目用到STM32,为了使PCB布线方便一些所以改了一些引脚,占用了JTAG接口的PA15和PB3,所以要禁用一下JTAG,下载采用SWD模式.这样在实际操作中做出一些总结(方法网上都有.这 ...
- cocos2d-x 详解之 CCAction(动作)
关于动作部分,总的来说使用起来比较简单,创建一个动作,然后让可渲染节点如精灵去执行这个动作即可.cocos2dx提供了很多类型的动作,使用起来也很方便.本节重点介绍动作CCAction的子类之一时间动 ...
- bzoj 3620 似乎在梦中见过的样子(KMP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3620 [题意] 给定一个字符串,统计有多少形如A+B+A的子串,要求A>=K,B ...
- 瞬间从IT屌丝变大神——分工安排
分工安排主要包含以下内容: 公共组件(包括common.css和common.js)一人维护,各子频道专人负责,每个频道正常情况下由一人负责,要详细写明注释,如多人合作,维护的人员注意添加注释信息,具 ...
- 关于OpenCV做图像处理内存释放的一些问题
转载:http://blog.sina.com.cn/s/blog_67a7426a0101czyr.html 工程运行,发现内存持续增长,到一定的时候就发生了内存泄漏. 内存泄露的定义 内存泄露是说 ...