3

Windows 7 では、マウスをウィンドウの上に置くだけでウィンドウにフォーカスを与えることができます。この機能はデフォルトでは有効になっていませんが、コントロール パネルで有効にすることができます。(ここに取るパスがあります:

[コンピューターの簡単操作センター-->マウスを使いやすくする-->「マウスをホバーしてウィンドウをアクティブにする」にチェックを入れます])。

私はこの機能がとても気に入っていますが、Resharper を使用して Visual Studio で C# クラスを開こうとすると、時々イライラします。CTRL+N を押して、表示するクラスの名前を入力します (たとえば、"MyWpfClass")。Resharper は、上部に「MyWpfClass」を含む提案のドロップダウンを表示します。Return キーを押すと、Resharper がドロップダウンを開き、"MyWpfClass.xaml" と "MyWpfClass.xaml.cs" のどちらかを選択できるようになりました。ただし、マウス カーソルが間違った場所にある場合、ドロップダウンは 1 秒以内に閉じて、振り出しに戻ります。focus-follows-mouse 機能をオフにせずにこれを修正する方法はありますか?

4

1 に答える 1

1

MS Outlook でも同じ問題がありました。連絡先の自動提案リストが自動的に閉じてしまうのは、Windows が新しいメッセージ ウィンドウの一部ではなく、ウィンドウとして扱うためです。

コンテキストメニューからアクセスできる同じオプション「Focus Follows Mouse」を持つNiftyWindowsを使用できます。

または、Autohotkey で記述されているため、extract を使用して、そのサブルーチン「XWN_FocusHandler」をスタンドアロン スクリプトに実行することもできます。

#Persistent 
#SingleInstance force
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
#Warn All, OutputDebug ; Recommended for catching common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

SetTimer, XWN_FocusHandler, 100
return

XWN_FocusHandler:
    CoordMode, Mouse, Screen
    MouseGetPos, XWN_MouseX, XWN_MouseY, XWN_WinID
    If ( !XWN_WinID )
        Return

    If ( (XWN_MouseX != XWN_MouseOldX) or (XWN_MouseY != XWN_MouseOldY) )
    {
        IfWinNotActive, ahk_id %XWN_WinID%
            XWN_FocusRequest = 1
        Else
            XWN_FocusRequest = 0

        XWN_MouseOldX := XWN_MouseX
        XWN_MouseOldY := XWN_MouseY
        XWN_MouseMovedTickCount := A_TickCount
    }
    Else
        If ( XWN_FocusRequest and (A_TickCount - XWN_MouseMovedTickCount > 500) )
        {
            WinGetClass, XWN_WinClass, ahk_id %XWN_WinID%
            If ( XWN_WinClass = "Progman" )
                Return

            ; checks wheter the selected window is a popup menu
            ; (WS_POPUP) and !(WS_DLGFRAME | WS_SYSMENU | WS_THICKFRAME)
            WinGet, XWN_WinStyle, Style, ahk_id %XWN_WinID%
            If ( (XWN_WinStyle & 0x80000000) and !(XWN_WinStyle & 0x4C0000) )
                Return

            IfWinNotActive, ahk_id %XWN_WinID%
                WinActivate, ahk_id %XWN_WinID%

            XWN_FocusRequest = 0
        }
Return
于 2013-11-19T10:45:06.270 に答える