GridMove や XNeat などの一部のプログラムでは、ユーザーは「常に最前面」コマンドを使用して、特定のウィンドウを他のウィンドウより上に保つことができます。他のすべてのウィンドウを「常に最前面」にする以外に、Windows 7 コマンドまたはそのフリーウェアを使用して、その逆、つまり「常に最下部」を実行する方法はありますか?
チャット プログラム (入力が行われる) をすべてのウィンドウの下に置き、ウィンドウの隙間から最新のメッセージとテキスト入力フィールドだけを表示し、チャット プログラムの残りの UI でスペースが乱雑にならないようにすると便利な場合があります。
答え1
昔、Windows には X-Mouse と呼ばれる PowerToy (後に TweakUI に) がありました。これは、特に、古いスタイルの X の「フォーカスはマウスに従います」をサポートしていました。この「フォーカス」と「フォアグラウンド」は同じものではありませんでした。これはもうメンテナンスされていないと思います (最後に見たのは WinXP でした)。
あまり使っていないが、無料のWindowsスクリプトツールオートIT短いスクリプトで必要なことを行うことができます:
#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 に保存し、「autoit3 dropwindow.au3」で実行します。
答え2
ATI Radeonグラフィックカードを搭載したPCをお持ちの場合は、最新のATIドライバとユーティリティを使用してHydraGridを使用できます。そうでない場合は、ウィンスプリット革命。