Há muito tempo, o Windows tinha um PowerToy (mais tarde no TweakUI) chamado X-Mouse que, entre outras coisas, suportava o estilo antigo X "foco segue mouse", onde "foco" e "primeiro plano" não eram os mesmos coisa. Eu não acredito que seja mantido mais (a última aparição foi para o WinXP).
Embora eu não tenha usado isso extensivamente, a ferramenta gratuita de scripts do Windows AutoIT pode fazer o que você quiser com um script curto:
#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" é uma propriedade de janela persistente que o WM mantém, não há equivalente "bottom most", então temos que fudê-lo um pouco.
O loop While aguarda que o aplicativo obtenha o primeiro plano e, em seguida, o insere novamente, mantendo o foco do teclado. Os pop-ups modais podem, às vezes, interferir nisso, mas devem ser bastante utilizáveis. O script continuará sendo executado em segundo plano depois que o programa assistido for encerrado. Alt + F11 para sair a qualquer momento.
Altere $ regexp para corresponder a "mIRC" ou o que for. O acima só irá lidar de forma confiável com uma janela de cada vez. Leia os documentos AutoIT para WinWait () para ver como combinar janelas que não sejam pelo título da janela.
Salve em dropwindow.au3 e execute-o com "autoit3 dropwindow.au3".