Замена левой и правой кнопки мыши в .NET

Как поменять местами левую и правую кнопки мыши в .NET (желательно С#)? В основном результат должен быть таким же, как если бы пользователь установил флажок «Переключить основную и дополнительную кнопки» в свойствах мыши через панель управления. Я имею дело с Windows XP, если это имеет значение.


person Eugene Katz    schedule 17.03.2009    source источник
comment
что вы подразумеваете под заменой... вы хотите сделать замену на системном уровне или для своего собственного приложения?   -  person Aamir    schedule 17.03.2009


Ответы (3)


Вы можете использовать вызов 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); 
person John Feminella    schedule 17.03.2009
comment
благодаря. возможно, вы захотите добавить, что вам нужно использовать System.Runtime.InteropServices; - person Eugene Katz; 17.03.2009
comment
Упс; Я действительно забыл упомянуть об этом. Я добавлю его для дальнейшего использования. - person John Feminella; 17.03.2009
comment
Это работает, но состояние не сохраняется после выхода пользователя из системы. Чтобы сохранить состояние подкачки, вы должны использовать решение Porges с реестром. - person foka; 24.02.2013

Что-то вроде этого:

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);
person porges    schedule 17.03.2009

Вот фрагмент кода, который это делает.

person Ólafur Waage    schedule 17.03.2009