在Windows系统置顶窗口不被Win+D快捷键影响

需求背景

Windows10系统,工作需要开多个应用程序,在使用双屏幕时(多显示器设置为:扩展这些显示器),希望使用另外一个屏幕做监控用,总时只要打开一个浏览器窗口盯着监控信息。

但是经常需要通过快捷键Win+D快速返回桌面,这就会导致另外一个屏幕上用于查看监控信息的浏览器窗口也会被隐藏,使用起来非常不方便。

实现方案

ShowDesktopOneMonitor + Microsoft PowerToys

开源组件ShowDesktopOneMonitor通过组合快捷键Win + Shift + D可以实现只隐藏当前显示器窗口而其他屏幕的窗口不受影响的效果。

通常更习惯使用Windows系统自带的Win + D组合快捷键实现快速返回桌面,因此还可以使用Microsoft PowerToys的快捷键映射功能将Windows系统自身的Win + D映射为ShowDesktopOneMonitor的Win + Shift + D


在实际使用过程中发现,由于ShowDesktopOneMonitor的版本比较老旧,对Windows10系统的兼容性不好,时不时都会出现快捷键失效的问题,体验不流畅。

AutoHotkey脚本

使用AutoHotkey脚本实现置顶浏览器窗口而不受Win + D快捷键的影响,如下是AutoHotkey V1版本脚本:

shell 复制代码
; AutoHotkey v1 脚本
; 功能:锁定特定窗口,使其不受 Win+D 等最小化指令影响
; 快捷键:
;   Ctrl+Shift+F1:锁定当前激活窗口(置顶+禁止最小化)
;   Ctrl+Shift+F2:解锁当前窗口(取消置顶+恢复最小化功能)

^+F1::  ; 锁定窗口
    WinGet, currentWindow, ID, A  ; 获取当前激活窗口ID
    if (currentWindow = 0)
        return  ; 无窗口激活则退出
    
    ; 窗口置顶
    WinSet, AlwaysOnTop, On, ahk_id %currentWindow%
    
    ; 禁止窗口最小化(移除最小化按钮样式)
    WinSet, Style, -0x20000, ahk_id %currentWindow%
    
    ToolTip, 已锁定窗口(不受Win+D影响)
    Sleep, 1500  ; 延迟1.5秒后隐藏提示
    ToolTip
return

^+F2::  ; 解锁窗口
    WinGet, currentWindow, ID, A
    if (currentWindow = 0)
        return
    
    ; 取消置顶
    WinSet, AlwaysOnTop, Off, ahk_id %currentWindow%
    
    ; 恢复最小化功能(添加最小化按钮样式)
    WinSet, Style, +0x20000, ahk_id %currentWindow%
    
    ToolTip, 已解锁窗口
    Sleep, 1500
    ToolTip
return

将上述脚本保存为后缀为.ahk的文件,双击运行,任务栏会显示 AutoHotkey 图标,然后:

  • 激活需要保护的窗口(如 Opera),按Ctrl+Shift+F1锁定,此时窗口会置顶且无法被最小化(包括Win+D触发时)。
  • 若要恢复,再次激活该窗口,按Ctrl+Shift+F2解锁。

如上所述,在双屏环境下,将需要置顶的窗口拖动到另外一个屏幕,再运行AutoHotkey脚本置顶即可。