Dawno temu Windows miał PowerToy (później w TweakUI) o nazwie X-Mouse, który między innymi obsługiwał w starym stylu X „fokus podąża za myszą”, gdzie „fokus” i „pierwszy plan” nie były tym samym. Nie sądzę, aby został już utrzymany (ostatnie obserwacje dotyczyły WinXP).
Chociaż nie korzystałem z niego zbyt często, bezpłatne narzędzie do skryptowania Windows AutoIT może robić, co chcesz, za pomocą krótkiego skryptu:
#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” to trwała właściwość okna, którą utrzymuje WM, nie ma równoważnego „bottom bottom”, więc musimy to trochę przekręcić.
Pętla While czeka, aż aplikacja przejdzie na pierwszy plan, a następnie ponownie go opuszcza, utrzymując ostrość klawiatury. Modalne wyskakujące okienka mogą czasami przeszkadzać w tym, ale powinno być całkiem użyteczne. Skrypt będzie działał w tle po zakończeniu oglądania oglądanego programu. Alt + F11, aby wyjść z niego w dowolnym momencie.
Zmień $ regexp, aby pasowało do „mIRC” lub cokolwiek innego. Powyższe będzie niezawodnie obsługiwać tylko jedno okno na raz. Przeczytaj dokumentację AutoIT dla WinWait (), aby zobaczyć, jak dopasować okna inne niż według tytułu okna.
Zapisz w dropwindow.au3 i uruchom go za pomocą „autoit3 dropwindow.au3”.
http://www.autoitscript.com/site/autoit/downloads/
foreground
.