Quantcast
Channel: WFU BLOG
Viewing all articles
Browse latest Browse all 571

Win10 自訂快速鍵切換高對比佈景主題﹍PowerShell 指令

$
0
0
high-contrast-custom-hotkey-powershell.jpg-Win10 自訂快速鍵切換高對比佈景主題﹍PowerShell 指令Windows 提供的高對比模式主要有兩類:白底黑字、黑底白字。我習慣的配置是淺底或白底黑字,且大部分 Windows 軟體也都是淺底或白底黑字,所以其實需要用到高對比模式的情況沒那麼多。而我前端工作常會用到的工具 Notepad++、Sublime Text 等,都能自選淺底佈景,自然也不需要切換成高對比模式。 會需要切換的主要是瀏覽器,因為每個網頁都會有自己的風格、配色,若遇到常用的網頁是黑底、深色為主色時,例如「PTT 網頁版」眼睛看了沒那麼舒服,就會想切換成白底黑字。 可惜的是測試了大部分 Chrome 套件,沒有一個可以很好的將黑底白字轉換成白底黑字,總之跟 Windows 預設的高對比效果差很多,所以最終還是得使用 Win10 的白底黑字佈景才行。 事情到此看起來已經結束了,那麼還有什麼問題要解決呢?其實為什麼我要花那麼多時間測試 Chrome 高對比套件,就是因為 Win10 切換高對比模式的熱鍵不好按,一方面需要兩隻手才能按得出來,一方面真的很難記,熱鍵的設計完全沒邏輯所以常常忘記怎麼按。 所以我想改成自訂熱鍵,除了好記也能用一隻手就按出來。然而這個任務進行了才發現異常艱難,本篇會分享這個過程有哪些坑,以及最終的解決方法。

一、Win10 內建功能操作

1. 選擇佈景主題使用 Win10 內建的高對比模式,及選擇對應的佈景主題,請見以下流程: 開始 → 設定 → 輕鬆存取 → 高對比 →「開啟高對比」選擇「開啟」→ 選擇佈景主題 → 白底黑字 high-contrast-custom-hotkey-powershell-1.jpg-Win10 自訂快速鍵切換高對比佈景主題﹍PowerShell 指令選完佈景主題後,再將「開啟高對比」選擇「關閉」即可,將來使用高對比功能時會自動啟用此佈景主題。 2. 熱鍵 Windows 預設切換高對比模式的熱鍵如下: Alt + Shift + Printscreen這組熱鍵既不好記,也看不出使用截圖鍵的邏輯,還不如 Ctrl + HCtrl + Alt + H這類可以跟 High Contrast 做聯想的熱鍵,同時也比較好按。

二、自訂熱鍵的困難之處

要使用自訂熱鍵取代預設熱鍵,原理就是想辦法模擬按下 Alt + Shift + Printscreen,但我所有的測試都失敗了: 1. 快速鍵軟體 HotkeyP我利用「快速鍵軟體 HotkeyP」,設定按下 Ctrl + Alt + H後,會自動模擬按鍵 Alt + Shift + Printscreen,但很奇怪怎麼按都不會有反應,測試了各種選項例如「以系統管理原身份執行」、「延遲執行」等等,都沒有效。 2. PowerShell 指令於是測試直接用 PowerShell 指令,模擬同時按下組合鍵,例如可參考這個討論串的模擬按鍵語法「Send Keys in Powershell」,奇怪的是一樣不會有作用。

三、執行佈景檔案

後來想到以前 Win7 似乎已經做過這件事,使用的方法是桌面設定兩個捷徑,一個高對比、一個原佈景,點擊捷徑就會執行佈景檔案,於是試著在 Win10 測試: 1. 儲存原本佈景檔桌面按右鍵 → 個人化 → 佈景主題 high-contrast-custom-hotkey-powershell-2.jpg-Win10 自訂快速鍵切換高對比佈景主題﹍PowerShell 指令佈景調整完畢後,如上圖按「儲存佈景主題」,設定名稱(例如 WFU),這個佈景主題檔案路徑如下: C:\Users\使用者名稱\AppData\Local\Microsoft\Windows\Themes\WFU.theme在檔案總管直接點擊此檔,就會立即套用該佈景主題。 2. 找出高對比佈景檔 Win10 的所有 4 個高對比佈景檔案路徑如下: C:\Windows\Resources\Ease of Access Themeshigh-contrast-custom-hotkey-powershell-3.jpg-Win10 自訂快速鍵切換高對比佈景主題﹍PowerShell 指令如上圖,紅框處的兩個檔案是主要目標:
  • hcwhite.theme:白底黑字
  • hcblack.theme:黑底白字
直接點擊檔案,就會立即套用高對比主題。 3. 困難重重以上測試都成功了,接下來試著將檔案做成捷徑,結果點擊後發現:
  • 佈景真的有切換,但切換完之後,直接進入系統設定「佈景主題」的畫面...
看來 Win10 就是不給你乾淨俐落的切換佈景,非常討厭,還要另外手動關閉設定視窗。 4. 使用指令關閉視窗在網路上查了利用指令執行佈景檔案的方法,結果這個討論串「Windows 10: apply theme programmatically」說的就是我遇到的情形,不過倒是有人提供了指令解決,範例如下: C:\PATH\TO\THEME\FILE.theme & timeout /t 03 /nobreak > NUL & taskkill /f /im systemsettings.exe翻成中文的意思就是,執行佈景檔案後,等待 3 秒,再刪除執行中的檔案 systemsettings.exe(也就是設定畫面的那個檔)。 雖然看起來事情解決了,但我不太喜歡這個解法,因為切換佈景主題有時花的時間長、有時花的時間短,不一定都是 3 秒。如果換了過長或過短的秒數:
  • 長一點比較穩妥,但等待時間久,要跟著一起瞎耗時間
  • 短一點可能導致 systemsettings.exe 還沒執行,指令找不到檔案刪就結束了

四、切換佈景軟體

1. Winaero Theme Switcher所以,只能繼續找解決方案,還好找到了國外大神製作的切換佈景工具: 2. 執行方法high-contrast-custom-hotkey-powershell-4.jpg-Win10 自訂快速鍵切換高對比佈景主題﹍PowerShell 指令
  • 下載檔案後解壓縮,裡面有 Win7 及 Win8 資料夾,執行 Win8 裡的檔案 ThemeSwitcher.exe就行了
  • 執行後如上圖,可看到目前使用的佈景(WFU),點擊紅框中的「Apply a theme」,選擇佈景檔案即可套用。
  • 不知道佈景檔案路徑的話,請往前找「三、執行佈景檔案」→「2. 找出高對比佈景檔」
3. 使用命令執行功能測試沒問題後,我們需要的是使用命令執行,才能做成捷徑、設定熱鍵,請參考官方文件說明「How to change a Windows theme from the command prompt」,範例如下: themeswitcher.exe "C:\Windows\Resources\Ease of Access Themes\hcwhite.theme"

五、使用 PowerShell 切換高對比模式

所有困難點都解決了,接下來終於可以用 PowerShell 寫指令,切換高對比佈景與原始佈景: 1. PowerShell 檔案內容開啟記事軟體,貼入以下內容: # 偵測目前佈景 $theme = Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes" -Name "CurrentTheme" | Select-Object -ExpandProperty CurrentTheme # 偵測到高對比白色模式 if ($theme -eq "C:\Windows\...\hcwhite.theme") { # 則使用預設佈景 & "D:\...\ThemeSwitcher.exe""C:\...\WFU.theme" } else { # 非高對比白色模式 則切換到高對比白色 & "D:\...\ThemeSwitcher.exe""C:\Windows\...\hcwhite.theme" }
  • 所有程式碼的意思,請見註解文字說明
  • 所有紅字參數,請按說明修改成自己的路徑
  • hcwhite.theme 請改為自己的高對比佈景檔案路徑
  • ThemeSwitcher.exe 請改為自己的檔案路徑
  • WFU.theme 請改為自己的原始佈景檔案路徑
改完後請將此檔副檔名儲存為 .ps1,例如 highContrast.ps12. Bat 檔內容開啟記事軟體,貼入以下內容: powershell -WindowStyle Hidden -NoProfile -ExecutionPolicy Bypass -File "D:\...\highContrast.ps1"
  • 紅字參數 highContrast.ps1 請改為自己前面儲存的 ps1 檔名路徑
  • 改完後請將此檔副檔名儲存為 .bat,例如 highContrast.bat
  • 直接點擊此 bat 檔,即可看到高對比佈景切換效果
3. 自訂快速鍵全部都沒問題後,最後可為這個 bat 檔設定熱鍵:
  • 對檔案按右鍵,建立捷徑 → 對捷徑按右鍵即可自訂快速鍵
  • 或是也可利用 HotkeyP 這類快速鍵軟體,設定快速鍵來執行此 bat 檔
更多 Windows 相關文章:

Viewing all articles
Browse latest Browse all 571

Trending Articles