Windows 7-Funktion oder Freeware, um ein Fenster immer unter anderen zu halten

Windows 7-Funktion oder Freeware, um ein Fenster immer unter anderen zu halten

Einige Programme, z. B. GridMove und XNeat, ermöglichen es Benutzern, ein bestimmtes Fenster mit dem Befehl „Immer im Vordergrund“ über anderen Fenstern zu halten. Gibt es eine Möglichkeit, das Gegenteil zu erreichen, also „Immer unten“ mit beliebigen Windows 7-Befehlen oder Freeware dafür, außer indem alle anderen Fenster „Immer im Vordergrund“ bleiben?

Manchmal ist es sinnvoll, Chat-Programme (in die getippt wird) unter allen Fenstern zu halten, wobei nur die neueste Nachricht und das Texteingabefeld durch die Lücken der Fenster sichtbar sind, ohne dass die restliche Benutzeroberfläche des Chat-Programms den Platz überfüllt.

Antwort1

Vor langer Zeit gab es in Windows ein PowerToy (später in TweakUI) namens X-Mouse, das unter anderem den alten X-Stil „Fokus folgt Maus“ unterstützte, bei dem „Fokus“ und „Vordergrund“ nicht dasselbe waren. Ich glaube nicht, dass es noch gepflegt wird (zuletzt wurde es für WinXP gesichtet).

Obwohl ich es nicht ausgiebig genutzt habe, das kostenlose Windows-Skripting-ToolAutoITkönnen mit einem kurzen Skript tun, was Sie wollen:

#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

„ganz oben“ ist eine dauerhafte Fenstereigenschaft, die der WM verwaltet; es gibt kein Äquivalent zu „ganz unten“, daher müssen wir ein wenig schummeln.

Die While-Schleife wartet, bis die Anwendung in den Vordergrund gelangt, und lässt sie dann wieder darunter verschwinden, während der Tastaturfokus erhalten bleibt. Modale Popups können dies manchmal beeinträchtigen, sollten aber durchaus brauchbar sein. Das Skript wird im Hintergrund weiter ausgeführt, nachdem das überwachte Programm beendet wurde. Mit Alt+F11 können Sie es jederzeit beenden.

Ändern Sie $regexp, damit es mit „mIRC“ oder was auch immer übereinstimmt. Das Obige verarbeitet nur zuverlässig ein Fenster gleichzeitig. Lesen Sie die AutoIT-Dokumente für WinWait(), um zu erfahren, wie Sie Fenster anders als nach Fenstertitel abgleichen können.

Speichern Sie es in dropwindow.au3 und führen Sie es mit „autoit3 dropwindow.au3“ aus.

http://www.autoitscript.com/site/autoit/downloads/

Antwort2

Wenn Sie einen PC mit ATI Radeon Grafikkarte haben, können Sie HydraGrid mit den neuesten ATI Treibern und Dienstprogrammen verwenden, wenn nichtWinsplit Revolution.

verwandte Informationen