Hace mucho tiempo, Windows tenía un PowerToy (más tarde en TweakUI) llamado X-Mouse que, entre otras cosas, soportaba el antiguo estilo X "el foco sigue al mouse", donde "foco" y "primer plano" no eran lo mismo. No creo que se mantenga más (el último avistamiento fue para WinXP).
Aunque no lo he usado ampliamente, la herramienta gratuita de secuencias de comandos de Windows AutoIT puede hacer lo que quiera con una secuencia de comandos corta:
#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" es una propiedad de ventana persistente que mantiene el WM, no hay un equivalente "bottom most", por lo que debemos evitarlo un poco.
El ciclo While espera a que la aplicación obtenga el primer plano, luego lo vuelve a colocar debajo mientras mantiene el foco del teclado. Las ventanas emergentes modales a veces pueden interferir con esto, pero debería ser bastante útil. El script continuará ejecutándose en segundo plano después de que finalice el programa observado. Alt + F11 para salir en cualquier momento.
Cambie $ regexp para que coincida con "mIRC" o lo que sea. Lo anterior solo manejará de manera confiable una ventana a la vez. Lea los documentos de AutoIT para WinWait () para ver cómo hacer coincidir ventanas que no sean por título de ventana.
Guarde en dropwindow.au3 y ejecútelo con "autoit3 dropwindow.au3".
http://www.autoitscript.com/site/autoit/downloads/
foreground
.