フォーカスなしでウィンドウをスクロールする

フォーカスなしでウィンドウをスクロールする

自宅には Windows 8 のラップトップがあり、職場には Windows 7 のラップトップがあります。どちらも Synaptics タッチパッドを備えています。問題は、職場のラップトップでは、現在どのウィンドウにフォーカスが当てられているかに関係なく、どのウィンドウもスクロールできることです。これが、両方のコンピューターで必要な動作です。

これは現在、Windows 8 コンピュータでは発生しません。wizmouse、alwaysmousewheel、katmouse などを使用できることはわかっています (試してみました)。しかし、どれも仕事用コンピュータのように 100% 機能しません。katmouse は時々動作しなくなり、alwaysmousewheel は勝手にスクロールする問題が発生し、wizmouse はマウスの動作が遅れることがあります。他のものは動作しません。

仕事用のコンピューターを手に入れる前は、それで我慢していましたが、今では、古いオペレーティング システムでも、外部プログラムを使わずに箱から出してすぐに使えることがわかり、自分のコンピューターでも同じように動作しないのはなぜだろうと不思議に思っています。

私が検索した内容は、すでに試した外部プログラムを提案する内容ばかりだったので、そうした回答は私が探しているものではありません (Synaptics ドライバーで魔法のように実行できる場合を除きます。ちなみに、Synaptics ドライバーは、Windows 8 コンピューターではより最新のものですが、動作しません)。

答え1

アルトドラッグこの機能もあります。

答え2

私が使うXマウスボタンコントロール私のコンピューター上では、これが私が使用するすべてのプログラムと最も互換性があることがわかりました。

答え3

AutoHotKey でこれを行う方法があります。長年 KatMouse を積極的に使用してきた私にとって、この方法は十分にテスト済みであるため、今のところ KatMouse をオフにしています (AHK スクリプトが機能するかどうかは後で確認します)。

スクリプトはこちらです(ソース):

CoordMode, Mouse, Screen
return

WheelUp::
    MouseGetPos, m_x, m_y
    hw_m_target := DllCall( "WindowFromPoint", "int", m_x, "int", m_y )

    ; WM_MOUSEWHEEL
    ;   WHEEL_DELTA = 120
    SendMessage, 0x20A, 120 << 16, ( m_y << 16 )|m_x,, ahk_id %hw_m_target%
return

WheelDown::
    MouseGetPos, m_x, m_y
    hw_m_target := DllCall( "WindowFromPoint", "int", m_x, "int", m_y )

    ; WM_MOUSEWHEEL
    ;   WHEEL_DELTA = 120
    SendMessage, 0x20A, -120 << 16, ( m_y << 16 )|m_x,, ahk_id %hw_m_target%
return

これまでの簡単なテストでは、KatMouse が使用していた場所すべてで動作し、さらに他のいくつかの場所でも動作しました。KatMouse は Visual Studio 2010 では正常に動作しませんでしたが、このツールは正常に動作するようです。また、KatMouse のようにリモート デスクトップを使用しても無効にならないこともわかりました (ただし、アクティブなスクロールはリモート コンピューターに渡されませんでした)。

答え4

Synaptics ドライバーの特定の古いバージョンでは、通常のマウスホイール イベントが送信されるため、AlwaysMouseWheel や同様のアプリは正常に機能します。

その一例はhttp://drivers.synaptics.com/Synaptics_v16_3_15_1_C_XP32_Vista32_Win7-32​​_XP64_Vista64_Win7-64_Signed_Acme_Inc.zip

関連情報