Fonctionnalité ou logiciel gratuit de Windows 7 pour garder une fenêtre toujours sous les autres

8

Certains programmes, par exemple GridMove et XNeat, permettent aux utilisateurs de conserver une fenêtre donnée au-dessus d'autres fenêtres en utilisant une commande "Always On Top". Existe-t-il un moyen de faire l'inverse, c'est-à-dire "Always At The Bottom" avec toutes les commandes ou logiciels gratuits de Windows 7, sauf en rendant toutes les autres fenêtres "Always On Top"?

Il est parfois utile de conserver les programmes de chat (dans lesquels la saisie a lieu) sous toutes les fenêtres avec uniquement le dernier message et le champ de saisie de texte visibles à travers les espaces des fenêtres sans que le reste de l'interface utilisateur du programme de chat encombre l'espace.

Gnubie
la source
1
Non, il n'y a pas de fonctionnalité intégrée dans la bibliothèque Win32 qui permet à un programmeur de forcer une application en arrière-plan. Il est plus logique de dire aux autres applications d’aller sur foreground.
Ramhound
Comme alternative, vous pouvez faire voir cette fenêtre à travers ma modification de sa transparence (de nombreux outils peuvent le faire). Ou vous pouvez utiliser AutoHotkey pour le minimiser dans le bac. (Si son ne tue pas le but :-))
Ankit
1
Même si Win32 ne prend pas cela en charge de manière native, vous pouvez envoyer une fenêtre particulière en arrière-plan à tout moment. Je ne sais pas si ça reste concentré alors. Vous pourriez peut-être chercher un moyen d'envoyer automatiquement la fenêtre à l'arrière dès qu'elle perd le focus. Une autre alternative est de carreler les fenêtres pour ne pas vous soucier de z-index ...
MarioDS

Réponses:

1

Il y a longtemps, Windows avait un PowerToy (plus tard dans TweakUI) appelé X-Mouse qui, entre autres, prenait en charge l'ancien X "focus suit mouse", où "focus" et "premier plan" n'étaient pas la même chose. Je ne crois pas que cela soit maintenu (la dernière observation était pour WinXP).

Bien que je ne l'ai pas beaucoup utilisé, l'outil de script Windows gratuit AutoIT peut faire ce que vous voulez avec un court script:

#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" est une propriété de fenêtre persistante que le WM maintient, il n'y a pas d'équivalent "bottom most", nous devons donc la truquer un peu.

La boucle While attend que l'application obtienne le premier plan, puis la replonge sous tout en gardant le focus clavier. Les fenêtres contextuelles modales peuvent parfois interférer avec cela, mais elles devraient être tout à fait utilisables. Le script continuera de s'exécuter en arrière-plan après la fin du programme surveillé. Alt + F11 pour le quitter à tout moment.

Modifiez $ regexp pour correspondre à "mIRC" ou autre. Ce qui précède ne traitera de manière fiable qu'une seule fenêtre à la fois. Lisez les documents AutoIT pour WinWait () pour voir comment faire correspondre les fenêtres autrement que par titre de fenêtre.

Enregistrez dans dropwindow.au3 et exécutez-le avec "autoit3 dropwindow.au3".

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

Mr Spuratic
la source
1

Si vous avez un PC équipé de la carte graphique ATI Radeon, vous pouvez utiliser HydraGrid avec les derniers pilotes et utilitaires ATI, sinon Winsplit Revolution .

climenole
la source