在.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 同时多个热键(中键、左键、鼠标右键同时按下)

如何在 PyQt5 中捕获 QTableWidget 上的左右鼠标单击事件?

js怎么区分出点击的是鼠标左键还是右键?

关于CMainFrm不接收鼠标事件响应原因

如何找出winapi的主要鼠标按钮?

IDEA插件系列(49):PowerMouse插件——鼠标手势