2009-03-17 11 views
7

Jak zamienić lewy i prawy przycisk myszy w .NET (najlepiej C#)? Zasadniczo wynik powinien być taki sam, jak gdyby użytkownik zaznaczył pole wyboru "Przełącz przyciski główne i dodatkowe" w oknie Właściwości myszy za pomocą panelu sterowania. Mam do czynienia z Windows XP, w przypadku, który robi różnicę.Zamiana lewego i prawego przycisku myszy w .NET

+0

co znaczy u zamiana ... czy u chcą zrobić swap na poziomie systemu lub swap dla własnej aplikacji? – Aamir

Odpowiedz

12

Można użyć wywołania API systemu Windows 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

dzięki. może dodać, że potrzebujesz "using System.Runtime.InteropServices;" –

+0

Whoops; Rzeczywiście nie wspomniałem o tym. Dodam go do przyszłego odniesienia. –

+0

To działa, ale stan nie jest zapisywany po wylogowaniu użytkownika. Aby stan wymiany był pamiętany, musisz użyć rozwiązania Porges z rejestrem. – foka

3

coś takiego:

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); 
Powiązane problemy