Windows 7功能或免费软件可让窗口始终位于其他窗口之下


8

某些程序(例如GridMove和XNeat)允许用户使用“始终在顶部”命令将给定窗口保持在其他窗口之上。除了将所有其他窗口设置为“ Always On Top”以外,是否有其他方法可以使用Windows 7命令或免费软件进行“ Always At The Bottom”反向操作?

有时将聊天程序(在其中进行键入操作)保持在所有窗口下方是很有用的,只有最新消息和文本输入字段可通过窗口间隙看到,而聊天程序的其余UI不会占用空间。


1
不,Win32库中没有内置功能,允许程序员将应用程序强制到后台。从逻辑上讲,它告诉其他应用程序转到foreground
Ramhound

或者,您可以让该窗口查看我更改其透明度的方式(许多工具都可以做到这一点)。或者,您也可以使用AutoHotkey将其最小化到托盘中。(如果它不能杀死目的:
Ankit 2012年

1
即使Win32本身不支持此功能,也可以在任何给定时刻将特定窗口发送到后台。不过,我不知道它是否能保持关注。也许您会寻找一种方法,以在窗口失去焦点后立即将其自动发送回背面。另一种选择是平铺窗户,因此您不必担心z-index ...
MarioDS 2012年

Answers:


1

很久以前,Windows有一个名为X-Mouse的PowerToy(后来在TweakUI中使用),除其他功能外,它还支持老式X“焦点跟随鼠标”,其中“ focus”和“ foreground”不是同一件事。我不认为它会得到维护(最后发现是WinXP)。

尽管我还没有广泛使用它,但是免费的Windows脚本工具AutoIT可以用一个简短的脚本来完成您想做的事情:

#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

“最上层”是WM维护的持久窗口属性,没有等效的“最下层”,因此我们必须稍加捏造。

While循环等待应用程序获得前景,然后在保持键盘焦点的同时将其再次放下。模态弹出窗口有时可能会对此产生干扰,但是它应该非常有用。在被监视程序终止后,脚本将继续在后台运行。Alt + F11可以随时退出。

更改$ regexp以匹配“ mIRC”或其他内容。上面只会一次可靠地处理一个窗口。阅读WinWait()的AutoIT文档,以了解如何匹配窗口(而不是窗口标题)。

保存到dropwindow.au3,然后使用“ autoit3 dropwindow.au3”运行它。

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.