web-dev-qa-db-ja.com

ウィンドウを常に他の人の下に保つためのWindows7の機能またはフリーウェア

一部のプログラム(例: GridMoveとXNeatを使用すると、ユーザーは「Always On Top」コマンドを使用して、特定のウィンドウを他のウィンドウの上に保持できます。他のすべてのウィンドウを「AlwaysOnTop」にする以外に、Windows 7のコマンドまたはフリーウェアを使用して「AlwaysAtThe Bottom」を実行する方法はありますか?

チャットプログラムのUIの残りの部分がスペースを乱雑にすることなく、ウィンドウのギャップから最新のメッセージとテキスト入力フィールドのみが表示されるように、すべてのウィンドウの下にチャットプログラム(入力が行われる)を保持すると便利な場合があります。

8
Gnubie

ずっと前に、WindowsにはX-Mouseと呼ばれるPowerToy(後にTweakUIで)がありました。これは、とりわけ、「フォーカス」と「フォアグラウンド」が同じではない古いスタイルのX「フォーカスフォローマウス」をサポートしていました。私はそれがもう維持されているとは思わない(最後の目撃はWinXPのためだった)。

私はそれを広範囲に使用していませんが、無料のWindowsスクリプトツールAutoITは、短いスクリプトで必要なことを実行できます。

#include <WinAPI.au3>
#include <Constants.au3>
#include <WindowsConstants.au3>
#include <MenuConstants.au3>
#include <SendMessage.au3>

Local $hWnd,$flags,$regexp

Func MyExit() 
    MsgBox(0,"Drop Window","Quitting!",2) 
    Exit 0
EndFunc

$flags = BitOr($SWP_NOMOVE,$SWP_NOSIZE,$SWP_NOACTIVATE,$SWP_ASYNCWINDOWPOS,$SWP_NOSENDCHANGING) 

;; hot key to call exit: ALT + F11
HotKeySet("!{F11}","MyExit")

;; application window title
$regexp=".*Notepad$"

;; 10 second time out on first startup, 
$hWnd = WinWait("[REGEXPTITLE:" & $regexp & "]", "", 10)
;; or wait forever
;$hWnd = WinWait("[REGEXPTITLE:" & $regexp & "]")

If ($hWnd) Then
    ;; uncomment next line to maximize window first
    ;_SendMessage($hWnd,$WM_SYSCOMMAND,$SC_MAXIMIZE)

    _WinAPI_SetWindowPos($hWnd, $HWND_BOTTOM, 0, 0, 0, 0, $flags);

    While 1
        If WinWaitActive($hWnd,"",10) Then
            _WinAPI_SetWindowPos($hWnd, $HWND_BOTTOM, 0, 0, 0, 0, $flags);
        EndIf
        ;; check for new window
        $hWnd = WinWait("[REGEXPTITLE:" & $regexp & "]","",1) 

        ;; uncomment next 3 lines to quit if no window
        ;if (NOT $hWnd) Then
        ;    MyExit()
        ;EndIf

        Sleep(250)
    Wend
Else
    MsgBox(0,"Drop Window","No window title matching /" & $regexp & "/") 
EndIf

「最上位」はWMが維持する永続的なウィンドウプロパティであり、同等の「最下位」はないため、少しファッジする必要があります。

Whileループは、アプリケーションがフォアグラウンドを取得するのを待ってから、キーボードのフォーカスを維持したまま、アプリケーションを再び下にドロップします。モーダルポップアップがこれを妨げる場合がありますが、かなり使用できるはずです。監視対象のプログラムが終了した後も、スクリプトはバックグラウンドで実行され続けます。 Alt + F11を押すと、いつでも終了できます。

$ regexpを「mIRC」などに一致するように変更します。上記は、一度に1つのウィンドウのみを確実に処理します。 WinWait()のAutoITドキュメントを読んで、ウィンドウタイトル以外のウィンドウを照合する方法を確認してください。

Dropwindow.au3に保存し、「autoit3dropwindow.au3」で実行します。

http://www.autoitscript.com/site/autoit/downloads/

1
mr.spuratic

ATI Radeonグラフィックカードを搭載したPCをお持ちの場合は、最新のATIドライバとユーティリティを備えたHydraGridを使用できます。そうでない場合は Winsplit Revolution

1
climenole