2009-03-17 20 views
7

¿Cómo puedo intercambiar los botones izquierdo y derecho del mouse en .NET (preferiblemente C#)? Básicamente, el resultado debería ser el mismo que si el usuario marcara la casilla "Cambiar botones primarios y secundarios" en Propiedades del mouse a través del panel de control. Estoy lidiando con Windows XP, en caso de que eso marque la diferencia.Intercambiando los botones izquierdo y derecho del mouse en .NET

+0

u ¿qué quiere decir mediante el canje ... do u desea hacer un intercambio a nivel de sistema o un intercambio para su propia aplicación? – Aamir

Respuesta

12

Se puede utilizar una llamada a la API de Windows para SwapMouseButton:

using System.Runtime.InteropServices; 

// ... 

[DllImport("user32.dll")] 
public static extern Int32 SwapMouseButton(Int32 bSwap); 

// ... 

// Swap it. 
SwapMouseButton(1); 

// Back to normal. 
SwapMouseButton(0); 
+0

gracias. Es posible que desee agregar que necesita "usar System.Runtime.InteropServices;" –

+0

Whoops; De hecho, descuidé mencionar eso. Lo agregaré para futuras referencias. –

+0

Esto funciona, pero el estado no se guarda después de que el usuario cierre la sesión. Para que se recuerde el estado de intercambio, debe usar la solución de Porges con el registro. – foka

3

Algo como esto:

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); 
Cuestiones relacionadas