recurso do Windows 7 ou freeware para manter uma janela sempre abaixo dos outros

8

Alguns programas, por exemplo GridMove e XNeat permitem que os usuários mantenham uma determinada janela acima de outras janelas usando o comando "Always On Top". Existe uma maneira de fazer o inverso, ou seja, "Always At The Bottom" com qualquer comando do Windows 7 ou freeware para ele, exceto fazendo todas as outras janelas "Always On Top"?

Às vezes, é útil manter programas de bate-papo (em que ocorre a digitação) abaixo de todas as janelas, com apenas a mensagem mais recente e o campo de entrada de texto visível através das lacunas das janelas sem o restante da interface do programa de bate-papo.

    
por Gnubie 24.09.2012 / 14:06

2 respostas

1

Há muito tempo, o Windows tinha um PowerToy (mais tarde no TweakUI) chamado X-Mouse que, entre outras coisas, suportava o estilo antigo X "foco segue mouse", onde "foco" e "primeiro plano" não eram os mesmos coisa. Eu não acredito que seja mantido mais (a última aparição foi para o WinXP).

Embora eu não tenha usado isso extensivamente, a ferramenta gratuita de scripts do Windows AutoIT pode fazer o que você quiser com um script curto:

#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" é uma propriedade de janela persistente que o WM mantém, não há equivalente "bottom most", então temos que fudê-lo um pouco.

O loop While aguarda que o aplicativo obtenha o primeiro plano e, em seguida, o insere novamente, mantendo o foco do teclado. Os pop-ups modais podem, às vezes, interferir nisso, mas devem ser bastante utilizáveis. O script continuará sendo executado em segundo plano depois que o programa assistido for encerrado. Alt + F11 para sair a qualquer momento.

Altere $ regexp para corresponder a "mIRC" ou o que for. O acima só irá lidar de forma confiável com uma janela de cada vez. Leia os documentos AutoIT para WinWait () para ver como combinar janelas que não sejam pelo título da janela.

Salve em dropwindow.au3 e execute-o com "autoit3 dropwindow.au3".

link

    
por 10.01.2013 / 15:03
1

Se você tem um PC equipado com Placa Gráfica ATI Radeon, você pode usar o HydraGrid com os drivers e utilitários mais recentes da ATI, se não o Winsplit Revolution .

    
por 26.09.2012 / 19:51