2009-03-17 18 views
7

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

+0

what do u dire scambiando ... fare u vogliono fare uno swap a livello di sistema o di uno swap per la propria applicazione? – Aamir

risposta

12

È 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); 
+0

grazie. potrebbe voler aggiungere che è necessario "using System.Runtime.InteropServices;" –

+0

Whoops; Ho davvero trascurato di menzionarlo. Lo aggiungerò per riferimento futuro. –

+0

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

3

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); 
Problemi correlati