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 とは無関係(?) |
下記の引数を指定して 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 の各フラグを指定 |
下記の各プロパティにより, ログオン中のユーザーの X-Mouse 関連の設定の取得が可能.
(Raise 設定の取得及び各設定の変更は, 可能かどうかも含め未確認.)
プロパティ | 名前空間 | 取得される設定 | 備考 |
---|---|---|---|
SystemInformation.IsActiveWindowTrackingEnabled | System.Windows.Forms | Focus 設定 | .NET Framework 2.0 以降 |
SystemInformation.ActiveWindowTrackingDelay | System.Windows.Forms | 待ち時間 | .NET Framework 2.0 以降 |
Microsoft では X-Mouse に関連する GUI による設定ツールとして以下を提供している.
これらのツールはいずれも, ログオン中のユーザーに対し即座に設定を反映するとともに, レジストリへの設定の保存も行う.
『Windows XP downloads - Microsoft Windows』より TweakUI を入手, インストールする.TweakUI の公開は終了したようだ.
TweakUI を実行し, ツリーから『Mouse』→『X-Mouse』を選択する.
『Activation follows mouse (X-Mouse)』のチェックで Focus が, 『Autoraise when activating』のチェックで Raise が有効になる. 『Activation delay (ms):』に設定した値が待ち時間となる.
『コントロール パネル』→『コンピューターの簡単操作』→『コンピューターの簡単操作センター』→『マウスを使いやすくします』を開く.
『ウィンドウの管理を簡単にします』の『マウス ポインターをウィンドウ上に合わせたときにウィンドウを選択します(W)』にチェックを入れると, Focus 及び Raise が有効になり, 待ち時間が 500ms に設定される.
日付 | 変更内容 |
---|---|
2012-04-10 | 公開. |
2012-04-19 | .NET Framework での設定取得方法を追加. |
2013-01-15 | 『はじめに』を追加. |
2016-11-01 | TweakUI の公開終了について追記. |