Función o software gratuito de Windows 7 para mantener una ventana siempre debajo de otras

Función o software gratuito de Windows 7 para mantener una ventana siempre debajo de otras

Algunos programas, por ejemplo GridMove y XNeat, permiten a los usuarios mantener una ventana determinada encima de otras ventanas mediante el comando "Siempre visible". ¿Hay alguna manera de hacer lo contrario, es decir, "Siempre en la parte inferior" con cualquier comando de Windows 7 o software gratuito, excepto haciendo que todas las demás ventanas estén "Siempre en la parte superior"?

A veces es útil mantener los programas de chat (en los que se escribe) debajo de todas las ventanas con solo el último mensaje y el campo de entrada de texto visibles a través de los espacios de las ventanas sin que el resto de la interfaz de usuario del programa de chat abarrote el espacio.

Respuesta1

Hace mucho tiempo, Windows tenía un PowerToy (más tarde en TweakUI) llamado X-Mouse que, entre otras cosas, admitía el antiguo estilo X "el enfoque sigue al mouse", donde "enfoque" y "primer plano" no eran lo mismo. No creo que ya se mantenga (el último avistamiento fue para WinXP).

Aunque no la he usado mucho, la herramienta gratuita de secuencias de comandos de WindowsAutoITPuedes hacer lo que quieras con un guión corto:

#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

"superior" es una propiedad de ventana persistente que mantiene WM, no existe un "más inferior" equivalente, por lo que tenemos que modificarlo un poco.

El bucle While espera a que la aplicación pase al primer plano y luego la coloca nuevamente mientras mantiene el foco del teclado. Las ventanas emergentes modales a veces pueden interferir con esto, pero debería ser bastante utilizable. El script continuará ejecutándose en segundo plano después de que finalice el programa observado. Alt+F11 para salir en cualquier momento.

Cambie $regexp para que coincida con "mIRC" o lo que sea. Lo anterior solo manejará de manera confiable una ventana a la vez. Lea los documentos de AutoIT para WinWait() para ver cómo hacer coincidir ventanas además del título de la ventana.

Guárdelo en dropwindow.au3 y ejecútelo con "autoit3 dropwindow.au3".

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

Respuesta2

Si tiene una PC equipada con una tarjeta gráfica ATI Radeon, puede usar HydraGrid con los controladores y utilidades ATI más recientes; de lo contrario,Revolución Winsplit.

información relacionada