2009-03-17 5 views
7

Comment échanger les boutons gauche et droit de la souris dans .NET (de préférence C#)? Fondamentalement, le résultat devrait être le même que si l'utilisateur coché la case "Basculer les boutons primaires et secondaires" dans les propriétés de la souris via le panneau de contrôle. J'ai affaire à Windows XP, au cas où cela ferait une différence.Permutation des boutons gauche et droit de la souris dans .NET

+0

qu'est-ce que tu veux dire en échangeant ... do u want faire un échange au niveau du système ou un échange pour votre propre application? – Aamir

Répondre

12

Vous pouvez utiliser un appel API Windows pour 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

merci. peut vouloir ajouter que vous avez besoin de "using System.Runtime.InteropServices;" –

+0

Oups; J'ai effectivement négligé de le mentionner. Je vais l'ajouter pour référence future. –

+0

Cela fonctionne mais l'état n'est pas enregistré après la déconnexion de l'utilisateur. Pour vous souvenir de l'état de swap, vous devez utiliser la solution de Porges avec le registre. – foka

3

Quelque chose comme ceci:

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); 
Questions connexes