Funkcja Windows 7 lub program freeware, aby okno zawsze znajdowało się pod innymi

8

Niektóre programy, np. GridMove i XNeat, pozwalają użytkownikom utrzymywać dane okno nad innymi oknami za pomocą polecenia „Zawsze na wierzchu”. Czy istnieje sposób na wykonanie odwrotnej czynności, tj. „Always At The Bottom” z dowolnymi poleceniami systemu Windows 7 lub oprogramowaniem freeware, chyba że wszystkie inne okna są „Always On Top”?

Czasami przydatne jest trzymanie programów czatowych (w których występuje pisanie) pod wszystkimi oknami, tak aby tylko ostatnie wiadomości i pola wprowadzania tekstu były widoczne przez luki w oknach, bez reszty interfejsu użytkownika programu czatowego zaśmiecającego przestrzeń.

Gnubie
źródło
1
Nie, nie ma wbudowanej funkcji w bibliotece Win32, która pozwala programiście na wymuszenie działania aplikacji w tle. Bardziej logicznie jest mówić innym aplikacjom, aby poszły do foreground.
Ramhound
Alternatywnie możesz sprawić, że okno to przejrzy moje zmienianie przezroczystości (wiele narzędzi może to zrobić). Lub możesz użyć AutoHotkey, aby zminimalizować go do zasobnika. (Jeśli nie zabija celu :-))
Ankit
1
Mimo że Win32 nie obsługuje tego natywnie, możesz w dowolnym momencie wysłać określone okno do tła. Ale nie wiem, czy to się skupia. Być może możesz poszukać sposobu automatycznego wysłania okna do tyłu, gdy tylko straci ono ostrość. Inną alternatywą jest kafelkowanie okien, więc nie powinieneś się martwić indeksem z ...
MarioDS

Odpowiedzi:

1

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/

pan. spuratic
źródło
1

Jeśli masz komputer wyposażony w kartę graficzną ATI Radeon, możesz używać HydraGrid z najnowszymi sterownikami i narzędziami ATI, jeśli nie Winsplit Revolution .

klimenol
źródło