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
Odpowiedz
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);
dzięki. może dodać, że potrzebujesz "using System.Runtime.InteropServices;" –
Whoops; Rzeczywiście nie wspomniałem o tym. Dodam go do przyszłego odniesienia. –
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
Here's a code snippet że to robi.
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);
co znaczy u zamiana ... czy u chcą zrobić swap na poziomie systemu lub swap dla własnej aplikacji? – Aamir