在.NET中交换鼠标左键和右键
Posted
技术标签:
【中文标题】在.NET中交换鼠标左键和右键【英文标题】:Swapping left and right mouse button in .NET 【发布时间】:2010-10-13 19:49:14 【问题描述】:如何在 .NET(最好是 C#)中交换鼠标左键和右键?基本上,结果应该与用户通过控制面板选中鼠标属性中的“切换主要和次要按钮”复选框相同。我正在处理 Windows XP,以防万一。
【问题讨论】:
你所说的交换是什么意思...你想为你自己的应用程序进行系统级交换还是交换? 【参考方案1】:您可以使用 Windows API 调用SwapMouseButton
:
using System.Runtime.InteropServices;
// ...
[DllImport("user32.dll")]
public static extern Int32 SwapMouseButton(Int32 bSwap);
// ...
// Swap it.
SwapMouseButton(1);
// Back to normal.
SwapMouseButton(0);
【讨论】:
谢谢。可能要添加您需要“使用 System.Runtime.InteropServices;” 哎呀;我确实忽略了提及这一点。我会添加它以供将来参考。 这可行,但用户注销后状态未保存。要记住交换状态,您必须使用 Porges 的注册表解决方案。【参考方案2】:类似这样的:
using Microsoft.Win32;
var key = Registry.CurrentUser.CreateSubKey("Control Panel\\Mouse\\");
var newValue = key.GetValue("SwapMouseButtons");
if (newValue == null) newValue = "1";
else newValue = Int32.Parse(newValue) == 1 ? "0" : "1";
key.SetValue("SwapMouseButtons", newValue, RegistryValueKind.String);
【讨论】:
【参考方案3】:Here's a code snippet 这样做。
【讨论】:
以上是关于在.NET中交换鼠标左键和右键的主要内容,如果未能解决你的问题,请参考以下文章
Autohotkey 同时多个热键(中键、左键、鼠标右键同时按下)