我希望能够通过按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
您可以通过手动运行.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
在测试中,似乎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
用这个:
F1::
Send {LAlt down}{LShift down}{PrintScreen}{LAlt Up}{LShift Up}
return
来自官方documentation:
按下使用,如:{LWin down} {RAin down}释放用尽如:{LWin up} {TWin up}