切换HighContrast主题 - Windows 10

问题描述 投票:2回答:3

我希望能够通过按F1切换Windows 10中的HighContrast主题。

在Windows 10中切换HighContrast主题的快捷方式是:

Left Alt + Left Shift + Print Screen

https://msdn.microsoft.com/en-us/library/hh923906.aspx

这是我的脚本:

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

; Toggle HighContrast Theme: Alt + Shift + PrintScreen
F1::
Send !+{PrintScreen}
Return
autohotkey
3个回答
2
投票

您可以通过手动运行.theme文件来应用该设置。问题是它将打开“设置”对话框。此脚本将运行高对比度1主题文件,等待“设置”对话框打开,然后关闭它。

编辑:添加了在两个主题之间切换的代码

hc := false
hctheme := "C:\Windows\Resources\Ease of Access Themes\hc1.theme"
stdtheme := "C:\Windows\Resources\Themes\theme1.theme"
; your personalized theme may be in
; C:\Users\{user.name}\AppData\Local\Microsoft\Windows\Themes\Custom.theme

F1::
  hc := !hc

  if (hc)
    run %hctheme%
  else
    run %stdtheme%

  WinWait Settings
  WinClose Settings
return

1
投票

在测试中,似乎Alt + PrtScr键盘组合在操作系统中被钩住太低而被AutoHotKey覆盖以添加Shift修改器,之后它只是默认采用活动窗口的屏幕截图。 (环顾AHK论坛,这似乎也是共识。)

我确实找到了一些script suggestions here,其中这个微小的修改在Win10 Pro上对我有用:

F1:: ;toggle high contrast
    vSize := A_PtrSize=8?16:12
    VarSetCapacity(HIGHCONTRAST, vSize, 0)
    NumPut(vSize, &HIGHCONTRAST, 0, "UInt") ;cbSize
    ;SPI_GETHIGHCONTRAST := 0x42
    DllCall("user32\SystemParametersInfo", UInt,0x42, UInt,vSize, Ptr,&HIGHCONTRAST, UInt,0)
    vFlags := NumGet(&HIGHCONTRAST, 4, "UInt") ;dwFlags
    ;JEE_Progress(vFlags, 1000)
    if (vFlags & 1) ;HCF_HIGHCONTRASTON := 0x1
        vFlags -= 1
    else
        vFlags += 1
    ;JEE_Progress(vFlags, 1000)
    VarSetCapacity(HIGHCONTRAST, vSize, 0)
    NumPut(vSize, &HIGHCONTRAST, 0, "UInt") ;cbSize
    NumPut(vFlags, &HIGHCONTRAST, 4, "UInt") ;dwFlags
    ;SPI_SETHIGHCONTRAST := 0x43
    DllCall("user32\SystemParametersInfo", UInt,0x43, UInt,vSize, Ptr,&HIGHCONTRAST, UInt,0)
return

0
投票

用这个:

F1::
Send {LAlt down}{LShift down}{PrintScreen}{LAlt Up}{LShift Up}
return

来自官方documentation

按下使用,如:{LWin down} {RAin down}释放用尽如:{LWin up} {TWin up}

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.