コーディング
すべてのマウス設定は次の2つのメインレジストリキーに格納されています。
- HKEY_CURRENT_USER¥Control Panel¥Desktop
- HKEY_CURRENT_USER¥Control Panel¥Mouse
これらの設定を取得したり変更したりするには、Microsoft.Win32名前空間をインポートして、すべてのレジストリ機能にアクセスできるようにする必要があります。まずはマウスホイールのスクロール設定から始めましょう。
マウスホイールのスクロール
マウスホイールのスクロール設定を取得する[Get Setting]ボタンに次のコードを追加します。
Private Sub btnGetWheelScroll_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnGetWheelScroll.Click 'Open Registry Key Dim NewKey As RegistryKey = _ Registry.CurrentUser.OpenSubKey("Control Panel¥¥Desktop", True) 'Get Value Dim GetVal As String = _ CType(NewKey.GetValue("WheelScrollLines"), String) txtMouseWheel.Text = GetVal 'Update Display If GetVal > 25 Then 'If Bigger Than 25 Lines At A Time txtMouseWheel.Text = "One Page At A Time" End If End Sub
このコードではレジストリオブジェクトを作成しています。このレジストリオブジェクトによってHKEY_CURRENT_USER¥Control Panelキーを開きます。このマウス機能に対応するWheelScrollLinesという設定を探し、その値をtxtMouseWheelテキストボックスに表示します。WheelScrollLines設定が25より大きければ、"One Page At A Time" と表示されます。
WheelScrollLinesを変更するために次のコードを追加します。
Private Sub btnChangeWheelScroll_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnChangeWheelScroll.Click 'Open Registry Key Dim NewKey As RegistryKey = _ Registry.CurrentUser.OpenSubKey("Control Panel¥¥Desktop", True) 'Change Scroll Lines Amount NewKey.SetValue("WheelScrollLines", txtMouseWheel.Text) End Sub
ここで該当するレジストリキーを再び開き、その値をtxtMouseWheelに入力されたテキストに設定します。
マウスボタンを交換する
この設定はユーザーが右利きであるか左利きであるかに関係するものです。次のプライベート変数を作成してください。
Private MouseButt As Integer 'Which Mouse Button?
右利き(Right Handed)か左利き(Left Handed)かを選択するラジオボタンのCheckedChangedイベントに次のコードを追加します。
Private Sub rdLeftButton_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles rdLeftButton.CheckedChanged MouseButt = 1 'Left Handed End Sub Private Sub rdRightButton_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles rdRightButton.CheckedChanged MouseButt = 0 'Right Handed End Sub
設定値の1はユーザーが左利きであることを示し、0はユーザーが右利きであることを示します。システムの現在の設定値を取得するには、このセクションの[Get Setting]ボタンに次のコードを追加します。
Private Sub btnGetMouseButton_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnGetMouseButton.Click 'Open Registry Key Dim NewKey As RegistryKey = _ Registry.CurrentUser.OpenSubKey("Control Panel¥¥Mouse", True) 'Get Value Dim GetVal As String = _ CType(NewKey.GetValue("SwapMouseButtons"), String) Select Case GetVal Case "0" 'Right Handed? rdRightButton.Checked = True 'Update Display rdLeftButton.Checked = False Case "1" 'Left Handed? rdLeftButton.Checked = True rdRightButton.Checked = False End Select End Sub
ここではSwapMouseButtonsの設定を調べ、その値に応じて該当するラジオボタンのオン/オフを切り替えます。この設定を変更するには、次のコードを追加します。
Private Sub btnChangeMouseButton_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnChangeMouseButton.Click 'Open Registry Key Dim NewKey As RegistryKey = _ Registry.CurrentUser.OpenSubKey("Control Panel¥¥Mouse", True) 'Change Left Handed/Right Handed NewKey.SetValue("SwapMouseButtons", MouseButt.ToString()) End Sub
現在選択されているラジオボタンの値を単にSwapMouseButtonsに書き込んだだけです。
おもしろいことに、この設定はRunDLL32とUser32.dllを使って変更できます。コマンドは次のようになります。
Process.Start("rundll32.exe", "user32.dll, SwapMouseButton")
