如何使 Windows 10 任务栏/快速启动/托盘中的图标变暗,以帮助防止 OLED 显示屏烧屏?

如何使 Windows 10 任务栏/快速启动/托盘中的图标变暗,以帮助防止 OLED 显示屏烧屏?

OLED 面板容易出现烧屏现象。如何让任务栏/托盘和快速启动图标/文本(即使任务栏本身也变暗)变暗?我知道深色主题,但请理解,这并不会使任务栏和快速启动栏中的图标变暗,只会使栏的背景颜色变暗。

还请注意,我不想自动隐藏任务栏/托盘,因为我听过无数人推荐这样做,但这不适合我。

答案1

您可以使用免费 自动热键

以下 AutoHotkey 脚本将用一个可点击的半透明窗口覆盖任务栏,但当窗口全屏时会隐藏它:

SysGet, Monitor, Monitor                   ; Get monitor dimensions
SysGet, WorkArea, MonitorWorkArea          ; Get monitor work-area without taskbar
dimtop := % WorkAreaBottom + 1             ; taskbar is assumed to start below the work-area
Gui Color, 0,0                             ; Black color
Gui -Caption +ToolWindow +E0x20            ; No title bar, No taskbar button, Transparent for clicks
Gui Show, X0 Y%dimtop% W%MonitorRight% H63 ; Create a semi-transparent cover window
WinGet ID, ID, A                           ; Get its HWND/handle ID
Winset AlwaysOnTop,ON,ahk_id %ID%          ; Keep it always on the top
WinSet Transparent,99,ahk_id %ID%          ; Transparency 99/256
SetTimer, coverIt, 500                     ; Repeat setting it to be on top of the taskbar
return

coverIt:
    WinGet style, Style, A                 ; Get active window style and dimensions
    WinGetPos ,,,winW,winH, A
    ; 0x800000 is WS_BORDER.
    ; 0x20000000 is WS_MINIMIZE.
    ; check no border and not minimized
    isfull := ((style & 0x20800000) = 0 and winH >= A_ScreenHeight and winW >= A_ScreenWidth)
    if (isfull) {
        WinHide, ahk_id %ID%
    } else {
        WinShow, ahk_id %ID%
        Winset AlwaysOnTop,ON,ahk_id %ID%      ; Ensure it is still on the top
    }
    return

安装 AutoHotKey 后,将脚本放入.ahk文件中并双击进行测试。您可以通过右键单击托盘栏中的绿色 H 图标并选择退出来停止脚本。要让它在登录时运行,请将其放在 的启动组中 C:\Users\USER-NAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

答案2

只是想更新提供的脚本@harrymc并询问@ccrez。你可以在我的网站上找到它这里

我这样做的目的是,如果您在主显示器上全屏显示,则脚本会停用,但如果它是在辅助显示器上全屏显示的应用程序,则脚本不会停用。

目标

  1. 自动使任务栏变暗以防止烧坏。
  2. 当应用程序在第二台显示器上全屏打开时保持暗淡。
  3. 如果应用程序在主显示器上全屏打开,则停止调暗。

来源

脚本

SysGet, Monitor, Monitor                   ; Get monitor dimensions
SysGet, WorkArea, MonitorWorkArea          ; Get monitor work-area without taskbar
dimtop := % WorkAreaBottom + 1             ; taskbar is assumed to start below the work-area
Gui Color, 0,0                             ; Black color
Gui -Caption +ToolWindow +E0x20            ; No title bar, No taskbar button, Transparent for clicks
Gui Show, X0 Y%dimtop% W%MonitorRight% H63 ; Create a semi-transparent cover window
WinGet ID, ID, A                           ; Get its HWND/handle ID
Winset AlwaysOnTop,ON,ahk_id %ID%          ; Keep it always on the top
WinSet Transparent,99,ahk_id %ID%          ; Transparency 99/256
SetTimer, coverIt, 500                     ; Repeat setting it to be on top of the taskbar
return

GetCurrentMonitor()
{
  SysGet, numberOfMonitors, MonitorCount
  WinGetPos, winX, winY, winWidth, winHeight, A
  winMidX := winX + winWidth / 2
  winMidY := winY + winHeight / 2
  Loop %numberOfMonitors%
  {
    SysGet, monArea, Monitor, %A_Index%
    if (winMidX > monAreaLeft && winMidX < monAreaRight && winMidY < monAreaBottom && winMidY > monAreaTop)
      return A_Index
  }
  SysGet, primaryMonitor, MonitorPrimary
  return "No Monitor Found"
}

coverIt:
    WinGet style, Style, A                 ; Get active window style and dimensions
    WinGetPos ,,,winW,winH, A
    ; 0x800000 is WS_BORDER.
    ; 0x20000000 is WS_MINIMIZE.
    ; check no border and not minimized
    isfull := ((style & 0x20800000) = 0 and winH >= A_ScreenHeight and winW >= A_ScreenWidth)
    isPrimaryMonitor := (GetCurrentMonitor() = 1)
    if (isfull and isPrimaryMonitor) {
        WinHide, ahk_id %ID%
    } else {
        WinShow, ahk_id %ID%
        Winset AlwaysOnTop,ON,ahk_id %ID%      ; Ensure it is still on the top
    }
    return

答案3

我拿了剧本@harrymc提供并转换为AutoHotkeys 版本 2。必须添加一个 try/catch 块,因为在版本 2 中,打开开始菜单时偶尔会抛出错误。catch 块是空的,因为在错误处理方面没有任何可做的事情(只是继续)。可能有更好的解决方案,但它对我来说确实有效。

; DIM TASKBAR FOR AUTOHOTKEYS V2
MonitorGet(, &MonitorLeft, &MonitorTop, &MonitorRight, &MonitorBottom)                   ; Get monitor dimensions
MonitorGetWorkArea(, &WorkAreaLeft, &WorkAreaTop, &WorkAreaRight, &WorkAreaBottom)          ; Get monitor work-area without taskbar
dimtop := WorkAreaBottom + 1             ; taskbar is assumed to start below the work-area
myGui := Gui()
myGui.BackColor := "0"                             ; Black color
myGui.Opt("-Caption +ToolWindow +E0x20")            ; No title bar, No taskbar button, Transparent for clicks
myGui.Show("X0 Y" . dimtop . " W" . MonitorRight . " H63") ; Create a semi-transparent cover window
ID := WinGetID("A")                           ; Get its HWND/handle ID
WinSetAlwaysOnTop(1, "ahk_id " ID)          ; Keep it always on the top
WinSetTransparent(99, "ahk_id " ID)          ; Transparency 99/256
SetTimer(coverIt,500)                     ; Repeat setting it to be on top of the taskbar
return

coverIt()
{
    try 
    {
        style := WinGetStyle("A")                 ; Get active window style and dimensions
        WinGetPos(, , &winW, &winH, "A")
        ; 0x800000 is WS_BORDER.
        ; 0x20000000 is WS_MINIMIZE.
        ; check no border and not minimized
        isfull := ((style & 0x20800000) = 0 and winH >= A_ScreenHeight and winW >= A_ScreenWidth)
        if (isfull) {
            WinHide("ahk_id " ID)
        } else {
            WinShow("ahk_id " ID)
            WinSetAlwaysOnTop(1, "ahk_id " ID)      ; Ensure it is still on the top
        }
    }
    catch 
    {
        ; NOOP
    }
    return
}

答案4

如果您不想将任务栏设置为自动隐藏,那么只有当您的光标位于其上时它才会出现,这是最简单和最有效的解决方案那么你可以尝试第三方软件,比如免费的Open-Shell 菜单

Open-Shell 菜单允许您设置任务栏的透明度和颜色以及文本的颜色,尽管图标本身似乎不受影响。为此,您需要找到或创建一个自定义图标对于“开始”菜单中的每个项目,以及修改可执行文件以更改其自己的图标

Open-Shell 菜单任务栏设置

如果你发现自动隐藏模式下任务栏行为不稳定,请尝试其他第三方工具,例如任务栏激活或者其他选择。

相关内容