SHOEISHA iD

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

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

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

japan.internet.com翻訳記事

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

入力中にカーソルを非表示にする設定をアクティブにする

Private Sub btnGetHidePointer_Click(ByVal sender As System.Object, _
   ByVal e As System.EventArgs) Handles btnGetHidePointer.Click
'Open Registry Key
Dim NewKey As RegistryKey = _
   Registry.CurrentUser.OpenSubKey("Control Panel¥¥Desktop", True)

'Check Type Of Value In UserPreferencesMask
If NewKey.GetValueKind("UserPreferencesMask") = _
   RegistryValueKind.Binary Then
'Get The Current Setting
Dim data As Byte() = _
   DirectCast(NewKey.GetValue("UserPreferencesMask"), Byte())

If data(2) = 7 Then        'Hide Pointer Active?
chkHidePointer.Checked = True

ElseIf data(2) = 6 Then    'Hide Pointer When Inactive
chkHidePointer.Checked = False
End If
End If
End Sub

Private Sub btnChangeHidePointer_Click(ByVal sender As System.Object, _
   ByVal e As System.EventArgs) Handles btnChangeHidePointer.Click
'Open Registry Key
Dim NewKey As RegistryKey = _
   Registry.CurrentUser.OpenSubKey("Control Panel¥¥Desktop", True)

'Check Type Of Value In UserPreferencesMask
If NewKey.GetValueKind("UserPreferencesMask") = _
   RegistryValueKind.Binary Then

'Get The Current Setting
Dim data As Byte() = _
   DirectCast(NewKey.GetValue("UserPreferencesMask"), Byte())
data(2) = 7 'Set To 7 ( Activate Hide Pointer While Typing )

NewKey.SetValue("UserPreferencesMask", data)    'Update Registry
End If
End Sub

システムカーソルを読み込む

 次の関数をフォームに追加します。

Private Function CursorList() As Cursor()
' Array Of All Cursors In Windows Forms.
Return New Cursor() {Cursors.AppStarting, Cursors.Arrow, _
   Cursors.Cross, Cursors.Default, Cursors.Hand, Cursors.Help, _
   Cursors.HSplit, Cursors.IBeam, Cursors.No, _
   Cursors.NoMove2D, Cursors.NoMoveHoriz, Cursors.NoMoveVert, _
   Cursors.PanEast, Cursors.PanNE, Cursors.PanNorth, _
   Cursors.PanNW, Cursors.PanSE, Cursors.PanSouth, _
   Cursors.PanSW, Cursors.PanWest, Cursors.SizeAll, _
   Cursors.SizeNESW, Cursors.SizeNS, Cursors.SizeNWSE, _
   Cursors.SizeWE, Cursors.UpArrow, Cursors.VSplit, Cursors.WaitCursor}
End Function

 この関数の目的は、使用可能な全カーソルのリストを作成することです。そこからForループを使ってカーソルコンボボックスにそれらのカーソルを読み込むことができます。

Private Sub frmMouseSettings_Load(ByVal sender As System.Object, _
   ByVal e As System.EventArgs) Handles MyBase.Load
Dim MouseCursor As Cursor                  'Create Cursor Object

For Each MouseCursor In CursorList()       'Loop Through Each Cursor
cboMousePointers.Items.Add(MouseCursor)    'Add to comboBox
Next MouseCursor

End Sub

選択されたカーソルを適用する

Private Sub cboMousePointers_SelectedIndexChanged(ByVal sender _
   As System.Object, ByVal e As System.EventArgs) _
   Handles cboMousePointers.SelectedIndexChanged

'Change Cursor To Seledcted Cursor
Me.Cursor = CType(cboMousePointers.SelectedItem, Cursor)

End Sub

 これは選択されたカーソルをフォームに適用するだけです。システムレベルで設定するには、SetCursorというAPIが必要です。

 これらの設定がすべて自動的に適用されることを期待するかもしれませんが、残念ながらそうはいきません。コンピュータを再起動しないと、変更した設定は有効になりません。これらの設定をすぐに適用するには、explorer.exeを再起動しなければなりません。そのためには、SendMessageTimeout APIを使用する必要があります。時間的な制約により、これについては今回は説明しませんが、タスクバーの設定を扱う次回の記事を見てください。

まとめ

 マウス設定の話はこれで終わりです。この記事は参考になったでしょうか。またお会いしましょう。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー