使用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 ...
 
随机推荐
- wifi详解(五)
			
1 Android平台的Wifi模块移植要点 1.1 Wifi结构 user interface Android WiFiService WPA_Supplicant DHD ...
 - Oracle 存储过程的创建,及触发器调用存储过程
			
一.创建存储过程 1.存储过程写法 create or replace procedure HVM_BYQ_TJ --变压器统计信息--->入库 (id in number) as begin ...
 - HDU 4749-Parade Show(KMP变形)
			
题意: 给出一个母串和一个模式串求母串中最多能分成最大的子串数(每个字串中的各个数字的大小关系和模式串相同) 分析: KMP变形匹配规则变一下即可,用当前数字和下个数字的差表示,大小关系方便匹配 #i ...
 - HDU 5776 sum (BestCoder Round #85 A) 简单前缀判断+水题
			
分析:就是判断简单的前缀有没有相同,注意下自身是m的倍数,以及vis[0]=true; #include <cstdio> #include <cstdlib> #includ ...
 - codeforces 687D Dividing Kingdom II 带权并查集(dsu)
			
题意:给你m条边,每条边有一个权值,每次询问只保留编号l到r的边,让你把这个图分成两部分 一个方案的耗费是当前符合条件的边的最大权值(符合条件的边指两段点都在一个部分),问你如何分,可以让耗费最小 分 ...
 - Redrain个人维护并使用的DuiLib和UiLib库源码下载地址
			
转载请说明原出处:http://blog.csdn.net/zhuhongshu/article/details/40740353,谢谢~~ 我把我自己使用的Duilib库和Uilib库都上传到了Gi ...
 - ubuntu 14.04 允许root 登录
			
在/etc/lightdm/lightdm.conf里添加一下两句: greeter-show-manual-login=true allow-guest=false
 - codeforce 702E Analysis of Pathes in Functional Graph   RMQ+二进制
			
http://codeforces.com/contest/702 题意:n个点,n条边,每个点出边只有一条,问从每个点出发经过k条边的边权和,以及边权最小值 思路: f[i][j] 第i个点出发,经 ...
 - C++ 我想这样用(六)
			
嗯,上一篇已经介绍了面向过程编程的语法知识,接下来是最后的也是最重要的一个部分: 第三部分:基于对象的编程风格 1.构造函数的两种写法 比如我们有如下的类定义: class Circle { publ ...
 - 虚拟桌面基础架构(VDI)与终端服务和传统PC对比
			
VDI(Virtual Desktop Infrastructure),即虚拟桌面基础架构,正迅速成为一个热门词汇,它将颠覆企业向终端用户交付应用的游戏规则.这篇专题就是想通过VDI与两种传统技术的对 ...