Windowsパーツ色を切り替えてみた
シナリオの実行状況に応じてWindowsパーツ色を切り替えるしくみを使い始めました。
お裾分けです。
みなさんの「こんな目的でこんな工夫をしてる」もご紹介いただけると嬉しいです。
対象のWindowsパーツ
- 壁紙
タスクバー
視覚や聴覚で状況を知得するアイデアの仲間
- 音、アナウンス
- 待機ボックス
- パトライト
- メール等のテキスト
きっかけのスレッド
https://winactor.com/questions/question/シナリオ実行中にブラウザのズームを変更したい/
- ホンネではいじって欲しくない局面で、思いを壁紙やタスクバーで主張*
*最下部に経緯の情報あり
壁紙色変更のコード
- リファレンスサイトを丸パクリ
SetWallPaper
https://www.donijan.com/web-g/donijan.com/public_html/motohiro/manual/vb/API/function/SetWallPaper.htm
1×1のビットマップを用意
- オレンジ.bmp
- イエロー.bmp
- グリーン.bmp
- ブルー.bmp
- ピンク.bmp
- 元の色.bmp
- Snipping Toolでキャプチャ
https://www.google.com/search?q=Snipping+Tool - ペイントで拡大してトリミング
https://www.google.com/search?q=ペイント+拡大+トリミング
WinActorから使う場合
- Excel操作(マクロ実行)
- Excel操作(引数付きでマクロを実行)
https://winactor.biz/library/2021/03/12_3791.html
シナリオが動き続けてる最中に使うなら、マクロの完了を待たずに進むように実行する
- Excel操作(マクロ実行)(改)
- コマンド実行系
- Explorerでファイル開く
- ファイル名を指定して実行
https://winactor.com/questions/?q=マクロ+待 - ※ WindowsAPIを使ってる部分はVBS化(WinActorライブラリ化)は難しそうな予感
タスクバー色変更のコード
- スクリプト実行
mySwitch = !スイッチ|アクセント,デフォルト!
Select Case mySwitch
Case "アクセント"
intVal = 1
Case "デフォルト"
intVal = 0
End SelectSet sh = WScript.CreateObject("WScript.Shell")
sh.RegWrite("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize\ColorPrevalence", intVal, "REG_DWORD")
注釈タブ案
- リファレンスを参考にいい感じの文章にする
リファレンス
Windows 10 スタートメニューやタスクバー、タイトルバーの配色をカスタマイズする
https://www.billionwallet.com/windows10/color-setting.html
Windowsスマートチューニング(346) Win10 IP編: スタートメニューなどの配色をレジストリから調整する | マイナビニュース
https://news.mynavi.jp/article/windows-346/
Windows10のタスクバーでのみアクセントカラーを変更する方法
https://www.windowsnoticias.com/ja/como-cambiar-el-color-de-enfasis-solamente-en-la-barra-de-tareas-en-windows-10/
VBAで全てのレジストリの操作を行う(WshShell)| Excel作業をVBAで効率化
https://vbabeginner.net/operate-all-registries-wshshell/
VBS(VBScript)によるレジストリ内に書きこむ方法を紹介
https://www.wannko.net/vbs/etc/regwrite.html
RegWrite (WshShell オブジェクト) - WSH@Workshop
http://wsh.style-mods.net/ref_wshshell/regwrite.htm
アクセントカラーの変更
- タスクバーを好みの色にしたい場合は、10進数か16進数でRGBを指定すれば良さそう
- ド派手に彩る余地もありそう
リファレンス
Windows10をレジストリで設定する | IT技術者が初心者でもわかりやすく説明!てくテク
https://www.te9te9.com/?p=463
アクセントカラーの設定(タイトルバーなど)
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\DWM
AccentColor
REG_SZ
(表記例)
16進数:00FF0000
10進数:255 0 0
※ 背景から自動的にアクセントカラーを選ぶ
「背景から自動的にアクセント カラーを選ぶ」のレジストリをコマンドで設定する方法【Win10編】 | Windows 自動化技術大全
https://automationlabo.com/wat/?p=7420
経緯
- 当初はディスプレイ右上に「触るなキケン」のミニウィンドウを出しておこうとした
- 一旦はChrome+HTML+JavaScriptで理想のUIとしくみに仕上げた
- 「"chrome.exeのフルパス" "ローカルHTMLのフルパス」を開くスタイル
- 待機一切なし+非同期にチューニングしても、踏み台Chromeの起動と起動済みChromeウィンドウの最小化に2秒弱かかる
- 爆速処理の最中に複数箇所で使うには残念なタイムロス
- これ以上のチューニングポイントは見出せず、今後フィットする場面がでてきたら活かすことに
Windowsパーツ色切り替えに舵を切った後に思いついたこと
- シナリオ冒頭で1回起動して最小化しとく
- 表示したい場面で前面化
- これならタイムロスなしで充分現実的
- アクティブにしたら、最小化するまで最前面に居続けようとする
- onloadで.focus()をループさせる
- body自体をボタンにしてクリックで.focus()のループ終了と.minimize()
- 表示したい場面ではローカルHTML再読み込みのみ
- 非表示はボタンクリックのみ
- ともに一瞬のはず
- もっと早く気づけば良かった、、
- 壁紙+タスクバーの使い心地や効果次第で家事を切り直すかも
リファレンス
[JavaScript] ウィンドウを最前面にする(window名.focus()) – コピペで使える JavaScript逆引きリファレンス
https://javascript.programmer-reference.com/js-window-focus/
ウィンドウを最小化する
http://www.openspc2.org/JavaScript/Ajax/ref/PrototypeWindowClass/ver0.96/ref/window/minimize/index.html
非同期のmsgbox.vbsとオリジナルダイアログのハイブリッド方面でもゴールを目指せるのかもしれない
https://winactor.com/questions/question/シナリオを止めないでメッセージボックスを出す/