2009-03-17 11 views
7

Wie tausche ich die linke und rechte Maustaste in .NET (vorzugsweise C#)? Grundsätzlich sollte das Ergebnis so aussehen, als hätte der Benutzer in den Mauseigenschaften über das Bedienfeld das Kontrollkästchen "Primäre und sekundäre Schaltflächen wechseln" aktiviert. Ich habe es mit Windows XP zu tun, falls es einen Unterschied macht.Vertauschen der linken und rechten Maustaste in .NET

+0

was bedeuten u durch Vertauschen ... do u ein System-Level-Swap oder eine Swap für Ihre eigene Anwendung zu tun? – Aamir

Antwort

12

Sie können einen Windows-API-Aufruf zu SwapMouseButton verwenden:

using System.Runtime.InteropServices; 

// ... 

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

// ... 

// Swap it. 
SwapMouseButton(1); 

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

danke. Möglicherweise möchten Sie hinzufügen, dass Sie "System.Runtime.InteropServices verwenden müssen"; –

+0

Whoops; Ich habe es wirklich vernachlässigt, das zu erwähnen. Ich werde es für zukünftige Referenz hinzufügen. –

+0

Dies funktioniert, aber der Status wird nicht gespeichert, nachdem sich der Benutzer abmeldet. Um sich den Swap-Status merken zu können, müssen Sie die Lösung von Porges mit der Registry verwenden. – foka

3

Etwas wie folgt aus:

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); 
Verwandte Themen