Windows10でアプリケーションごとに輝度を設定、自動で変更する - AutoHotkey

Quick Edit Pencil
AutoHotkeyスクリプトで実現。
AutoHotkeyをダウンロードしてスクリプトをコピペして輝度を変更したいソフトを指定してファイル保存、保存したファイルをダブルクリックして実行するとタスクバーの通知エリアに常駐するので、不要になれば終了する。とても簡単です。

グラフィック系アプリを使うときは最大輝度にて、ブラウザやオフィス系アプリに移動したらデフォルトの輝度に戻す-という使い方が最近多い。

チャームから輝度を変更できるが都度面倒なので、アプリを切り替える度に、設定した輝度に自動で変更するスクリプトを調べてみた。(イベントはアクティブウインドウの変更又はActiveWindowの切り替え)

フリーソフトなども調べてみたがアプリ毎に輝度を設定できるユーティリティは見つけられなかった。

当初、PowerShellで実現できる予定だったが、アクティブウインドウ変更のイベント取得方法がわからなかったので、AutoHotkeyを使いアプリ毎に輝度の変更を自動で行うスクリプトをつくってみた。(ほぼコピペでスミマセン、一応思い通りの結果が得られて満足)マーカー部分が追記分

60行目に輝度を設定するアプリを文字列で指定。アプリ毎に識別できる文字列を含む変数が違うのでウィンドウを特定する - hogeを参考に設定。

ノートやタブレットなどの液晶一体型でウインドウズから輝度を調整できるパソコンでのみ効きます。

  1. #Persistent ; スクリプトを常駐させる
  2.  
  3. /*
  4. GPD WINの画面輝度をあれこれするAutoHotkeyスクリプト
  5. http://qiita.com/diaphragm/items/9769c79789d7a9958f8a
  6. 輝度を変更するスクリプト
  7. */
  8.  
  9. prev_brightness := GetBrightness()
  10.  
  11. GetBrightness()
  12. {
  13. WMI := "winmgmts:{impersonationLevel=impersonate}!\\.\root\WMI"
  14. MonitorBrightness := ComObjGet(WMI).ExecQuery("SELECT * FROM WmiMonitorBrightness WHERE Active=TRUE")
  15.  
  16. for i in MonitorBrightness {
  17. brightness := i.CurrentBrightness
  18. break
  19. }
  20.  
  21. Return, %brightness%
  22. }
  23.  
  24. SetBrightness(value)
  25. {
  26. WMI := "winmgmts:{impersonationLevel=impersonate}!\\.\root\WMI"
  27. MonitorBrightnessMethods := ComObjGet(WMI).ExecQuery("SELECT * FROM wmiMonitorBrightNessMethods WHERE Active=TRUE")
  28.  
  29. if value < 0
  30. value := 0
  31. for i in MonitorBrightnessMethods {
  32. i.WmiSetBrightness(5, value)
  33. break
  34. }
  35. }
  36. /*
  37. Windowsのイベントを拾う
  38. https://sites.google.com/site/agkh6mze/howto/winevent#TOC-WinEvent-
  39. ここではアクティブウィンドウが切り替わった時に、指定の関数が呼ばれるようにしてみる。
  40. */
  41.  
  42. myFunc := RegisterCallback("WinActivateHandler")
  43.  
  44. myHook := DllCall("SetWinEventHook"
  45. , "UInt", 0x00000003 ; eventMin : EVENT_SYSTEM_FOREGROUND
  46. , "UInt", 0x00000003 ; eventMax : EVENT_SYSTEM_FOREGROUND
  47. , "UInt", 0 ; hModule : self
  48. , "UInt", myFunc ; hWinEventProc :
  49. , "UInt", 0 ; idProcess : All process
  50. , "UInt", 0 ; idThread : All threads
  51. , "UInt", 0x0003 ; dwFlags : WINEVENT_SKIPOWNTHREAD | WINEVENT_SKIPOWNPROCESS
  52. , "UInt")
  53.  
  54. WinActivateHandler(hWinEventHook, event, hwnd, idObject, idChild, thread, time) {
  55. WinGetTitle, title, ahk_id %hwnd%
  56. WinGetClass, class, ahk_id %hwnd%
  57.  
  58. global prev_brightness
  59. if (RegExMatch(title, "^Blender")) {
  60. ;Tooltip, カスタム輝度 %prev_brightness%
  61. prev_brightness := GetBrightness()
  62. SetBrightness(100)
  63. } else {
  64. ;Tooltip, デフォルト輝度 %prev_brightness%
  65. SetBrightness(prev_brightness)
  66. }
  67.  
  68. ;Tooltip, 「%title% ahk_class %class%」がアクティブになった
  69. }
  70.  

このブログの人気の投稿

PowerShellのGetDetailsOf メソッドでプロパティの詳細情報のID番号と項目名を列挙します

Blender: 辺の長さを数値で指定するアドオン

書字方向 横書方向変換スクリプト 左書きから右書きへ(コピペ用途)

決定版 Edgeでローカルファイルを開く パワーシェルスクリプト (ウインドウズでドロップレット)

ヤバい!JAPANNEXT WQHD対応 27型ワイド液晶ディスプレイ「JN-IPS2716WQHD」を注文してみた!!!

PowerShellで複数ファイルのプロパティを取得する方法(準備編)

AppleScript 改行 コード 置換