Дуже давно в Windows була PowerToy (пізніше в TweakUI) під назвою X-Mouse, яка, крім іншого, підтримувала старий стиль 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
"topmost" - це стійке властивість вікон, яке підтримує WM, немає еквівалента "bottom most", тому нам доведеться його трохи погладити.
Хоча цикл чекає, коли програма вийде на перший план, а потім опускає його знову, зберігаючи фокус клавіатури. Модальні спливаючі вікна іноді можуть заважати цьому, але це має бути досить зручним. Сценарій продовжуватиме працювати у фоновому режимі після завершення переглянутої програми. Alt + F11, щоб вийти з нього в будь-який час.
Змініть $ regexp на "mIRC" або інше. Вищезазначене буде надійно обробляти лише одне вікно за один раз. Прочитайте документи AutoIT для WinWait (), щоб побачити, як відповідати вікнам, окрім назви вікна.
Збережіть на dropwindow.au3 і запустіть його з "autoit3 dropwindow.au3".
http://www.autoitscript.com/site/autoit/downloads/
foreground
.