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


8

Algunos programas, por ejemplo, GridMove y XNeat, permiten a los usuarios mantener una ventana determinada encima de otras ventanas usando un comando "Siempre en la parte superior". ¿Hay alguna manera de hacer lo contrario, es decir, "Siempre en la parte inferior" con cualquier comando o programa gratuito de Windows 7, excepto haciendo que todas las demás ventanas "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 campo de mensaje y entrada de texto visible a través de los huecos de las ventanas sin que el resto de la interfaz de usuario del programa de chat abarrote el espacio.


1
No, no hay una función integrada dentro de la Biblioteca Win32 que permita que un programador fuerce una aplicación a un segundo plano. Es más lógico decirle a otras aplicaciones que vayan a foreground.
Ramhound

Como alternativa, puede hacer que esa ventana vea a través de mi alterar su transparencia (muchas herramientas pueden hacer esto). O puede usar AutoHotkey para minimizarlo en la bandeja. (Si no mata el propósito :-))
Ankit

1
A pesar de que Win32 no admite esto de forma nativa, puede enviar una ventana particular al fondo en cualquier momento. Sin embargo, no sé si mantiene el foco entonces. Tal vez podría buscar una manera de enviar automáticamente la ventana hacia atrás tan pronto como pierda el foco. Otra alternativa es colocar las ventanas en mosaico para que no deba preocuparse por el índice z ...
MarioDS

Respuestas:


1

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

Aunque no lo he usado ampliamente, la herramienta gratuita de secuencias de comandos de Windows AutoIT puede hacer lo que quiera con una secuencia de comandos corta:

#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" es una propiedad de ventana persistente que mantiene el WM, no hay un equivalente "bottom most", por lo que debemos evitarlo un poco.

El ciclo While espera a que la aplicación obtenga el primer plano, luego lo vuelve a colocar debajo mientras mantiene el foco del teclado. Las ventanas emergentes modales a veces pueden interferir con esto, pero debería ser bastante útil. 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 que no sean por título de ventana.

Guarde en dropwindow.au3 y ejecútelo con "autoit3 dropwindow.au3".

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


1

Si tiene una PC equipada con la tarjeta gráfica ATI Radeon, puede usar HydraGrid con los últimos controladores y utilidades ATI, si no Winsplit Revolution .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.