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。你可以在我的网站上找到它这里。
我这样做的目的是,如果您在主显示器上全屏显示,则脚本会停用,但如果它是在辅助显示器上全屏显示的应用程序,则脚本不会停用。
目标
- 自动使任务栏变暗以防止烧坏。
- 当应用程序在第二台显示器上全屏打开时保持暗淡。
- 如果应用程序在主显示器上全屏打开,则停止调暗。
来源
- Reddit 来源:屏幕保护程序和任务栏调光器用于在 Windows 桌面和游戏使用场景中保护 OLED 显示屏:r/OLED_Gaming
- StackOverflow 参考脚本:如何使 Windows 10 任务栏/快速启动/托盘中的图标变暗,以帮助防止 OLED 显示屏烧屏? - 超级用户
- 检测全屏应用程序停止调光:检测全屏应用程序? - 寻求帮助 - AutoHotkey 社区
- 检测当前窗口所在的屏幕:检测当前窗口所在的屏幕 - 寻求帮助 - 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
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 菜单允许您设置任务栏的透明度和颜色以及文本的颜色,尽管图标本身似乎不受影响。为此,您需要找到或创建一个自定义图标对于“开始”菜单中的每个项目,以及修改可执行文件以更改其自己的图标。
如果你发现自动隐藏模式下任务栏行为不稳定,请尝试其他第三方工具,例如任务栏激活或者其他选择。