SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

VB.NETによるマウス設定の変更

コーディング

 すべてのマウス設定は次の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")

次のページ
ダブルクリックの速度を変更する

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Hannes du Preez(Hannes du Preez)

プログラミングトレーナー。プログラミングを最大の趣味とする。Visual Basic 5からプログラミングを始め、Visual Basic 6.0、Visual C++ 6.0、Visual Basic .NETでアプリケーションを開発。プログラミングの知識はすべて独学によるもので、CodeGuru...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3465 2009/02/16 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー