Come faccio a scambiare i pulsanti sinistro e destro del mouse in .NET (preferibilmente C#)? Fondamentalmente il risultato dovrebbe essere lo stesso di se l'utente ha selezionato la casella di controllo "Cambia pulsanti primari e secondari" in Proprietà del mouse tramite il pannello di controllo. Ho a che fare con Windows XP, nel caso questo faccia la differenza.Scambiare il pulsante sinistro e destro del mouse in .NET
risposta
È possibile utilizzare una chiamata API di Windows per SwapMouseButton
:
using System.Runtime.InteropServices;
// ...
[DllImport("user32.dll")]
public static extern Int32 SwapMouseButton(Int32 bSwap);
// ...
// Swap it.
SwapMouseButton(1);
// Back to normal.
SwapMouseButton(0);
grazie. potrebbe voler aggiungere che è necessario "using System.Runtime.InteropServices;" –
Whoops; Ho davvero trascurato di menzionarlo. Lo aggiungerò per riferimento futuro. –
Funziona ma lo stato non viene salvato dopo che l'utente si è disconnesso. Per ricordare lo stato di swap devi usare la soluzione di Porges con il registro. – foka
Here's a code snippet che fa questo.
Qualcosa di simile a questo:
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);
what do u dire scambiando ... fare u vogliono fare uno swap a livello di sistema o di uno swap per la propria applicazione? – Aamir