X-Mouse 関連 技術情報

TTXMouse を作成する中で調べた, X-Mouse に関連する情報をまとめました.

注意事項

本技術情報は私 遠藤 陽平 が独自に調査・作成したものです. 作成にあたり Microsoft 社の公式な資料を参照しておりますが, 本技術情報自体は Microsoft 社の公式な資料ではなく, Microsoft 社がその内容を保証するものではありません.

対象 OS : Windows XP・Vista・7 32bit

最終更新日 : 2016-11-01

はじめに

X-Mouse とは, Windows を X Window System 風のフォーカス移動で使用するための設定である.

通常, Windows ではマウスクリックによりウィンドウのフォーカスが移動する. X-Mouse の設定により, ポインタの移動に追従してフォーカスを移動することと, その際にフォーカスしたウィンドウを最前面に移動することが可能となる.

本資料では X-Mouse の設定に関するレジストリ・ API について解説する.

レジストリ

"HKEY_CURRENT_USER\Control Panel\Desktop\" キー中の下記の値が, X-Mouse 設定に関連するレジストリ設定となる.

これらのレジストリに対する変更は, ログオン中のユーザーに対し即座には反映されない. レジストリの設定を反映するには, 一旦ログオフし, 再度ログオンする必要がある.

名前 型 (サイズ) 備考
UserPreferencesMask REG_BINARY (4Bytes (Windows XP・Vista) / 8Bytes (Windows 7)) オフセット 0 の bit 0 が Focus の無効(0)/有効(1), bit 6 が Raise の無効(0)/有効(1)
ActiveWndTrkTimeout REG_DWORD Focus 及び Raise の待ち時間 [ms] 似た名前の ActiveWndTrackTimeout という値があるが, X-Mouse とは無関係(?)

API

下記の引数を指定して SystemParametersInfo API を実行することで, X-Mouse 関連の設定が可能.

これらの API による設定の変更は, ログオン中のユーザーに対し即座に反映される. また, SPIF_UPDATEINIFILE を指定した場合は同時に上記のレジストリへも設定が保存される. SPIF_SENDCHANGE の指定の有無による動作の相違は未確認.

用途 第1引数 (UINT uiAction) 第2引数 (UINT uiParam) 第3引数 (PVOID pvParam) 第4引数 (UINT fWinIni)
Focus 設定の取得 SPI_GETACTIVEWINDOWTRACKING 0 取得した Focus 設定を格納する BOOL 型変数へのポインタ 0
Raise 設定の取得 SPI_GETACTIVEWNDTRKZORDER 0 取得した Raise 設定を格納する BOOL 型変数へのポインタ 0
待ち時間 設定の取得 SPI_GETACTIVEWNDTRKTIMEOUT 0 取得した 待ち時間 設定を格納する DWORD 型変数へのポインタ 0
Focus 設定 SPI_SETACTIVEWINDOWTRACKING 0 PVOID 型に型変換した Focus 設定のBOOL 値 必要に応じて SPIF_UPDATEINIFILE 及び SPIF_SENDCHANGE の各フラグを指定
Raise 設定 SPI_SETACTIVEWNDTRKZORDER 0 PVOID 型に型変換した Raise 設定の BOOL 値 必要に応じて SPIF_UPDATEINIFILE 及び SPIF_SENDCHANGE の各フラグを指定
待ち時間 設定 SPI_SETACTIVEWNDTRKTIMEOUT 0 PVOID 型に変換した 待ち時間 設定の DWORD 値 必要に応じて SPIF_UPDATEINIFILE 及び SPIF_SENDCHANGE の各フラグを指定

.NET Framework

下記の各プロパティにより, ログオン中のユーザーの X-Mouse 関連の設定の取得が可能.

(Raise 設定の取得及び各設定の変更は, 可能かどうかも含め未確認.)

プロパティ 名前空間 取得される設定 備考
SystemInformation.IsActiveWindowTrackingEnabled System.Windows.Forms Focus 設定 .NET Framework 2.0 以降
SystemInformation.ActiveWindowTrackingDelay System.Windows.Forms 待ち時間 .NET Framework 2.0 以降

GUI による設定

Microsoft では X-Mouse に関連する GUI による設定ツールとして以下を提供している.

これらのツールはいずれも, ログオン中のユーザーに対し即座に設定を反映するとともに, レジストリへの設定の保存も行う.

TweakUI (for Windows XP)

Windows XP downloads - Microsoft Windows』より TweakUI を入手, インストールする.TweakUI の公開は終了したようだ.

TweakUI を実行し, ツリーから『Mouse』→『X-Mouse』を選択する.

『Activation follows mouse (X-Mouse)』のチェックで Focus が, 『Autoraise when activating』のチェックで Raise が有効になる. 『Activation delay (ms):』に設定した値が待ち時間となる.

コントロール パネル からの設定 (for Windows 7)

『コントロール パネル』→『コンピューターの簡単操作』→『コンピューターの簡単操作センター』→『マウスを使いやすくします』を開く.

『ウィンドウの管理を簡単にします』の『マウス ポインターをウィンドウ上に合わせたときにウィンドウを選択します(W)』にチェックを入れると, Focus 及び Raise が有効になり, 待ち時間が 500ms に設定される.

更新履歴

日付 変更内容
2012-04-10 公開.
2012-04-19 .NET Framework での設定取得方法を追加.
2013-01-15 『はじめに』を追加.
2016-11-01 TweakUI の公開終了について追記.

その他諸々置き場へ

トップページへ