0

シナリオの実行状況に応じてWindowsパーツ色を切り替えるしくみを使い始めました。
お裾分けです。
みなさんの「こんな目的でこんな工夫をしてる」もご紹介いただけると嬉しいです。

 

 
対象のWindowsパーツ

  • 壁紙
    タスクバー

 

視覚や聴覚で状況を知得するアイデアの仲間

  • 音、アナウンス
  • 待機ボックス
  • パトライト
  • メール等のテキスト

https://winactor.com/questions/?q=エラー|異常

 

きっかけのスレッド

https://winactor.com/questions/question/シナリオ実行中にブラウザのズームを変更したい/

  • ホンネではいじって欲しくない局面で、思いを壁紙やタスクバーで主張*
    *最下部に経緯の情報あり

 

 
壁紙色変更のコード

  • リファレンスサイトを丸パクリ

SetWallPaper
https://www.donijan.com/web-g/donijan.com/public_html/motohiro/manual/vb/API/function/SetWallPaper.htm

https://www.google.com/search?q=vba+壁紙+変更

 

1×1のビットマップを用意

  • オレンジ.bmp
  • イエロー.bmp
  • グリーン.bmp
  • ブルー.bmp
  • ピンク.bmp
  • 元の色.bmp
  1. Snipping Toolでキャプチャ
    https://www.google.com/search?q=Snipping+Tool
  2. ペイントで拡大してトリミング
    https://www.google.com/search?q=ペイント+拡大+トリミング

 

WinActorから使う場合

 

シナリオが動き続けてる最中に使うなら、マクロの完了を待たずに進むように実行する

  • Excel操作(マクロ実行)(改)
  • コマンド実行系
  • Explorerでファイル開く
  • ファイル名を指定して実行
    https://winactor.com/questions/?q=マクロ+待
  • ※ WindowsAPIを使ってる部分はVBS化(WinActorライブラリ化)は難しそうな予感

 

 
タスクバー色変更のコード

  • スクリプト実行

mySwitch = !スイッチ|アクセント,デフォルト!

Select Case mySwitch
  Case "アクセント"
    intVal = 1
  Case "デフォルト"
    intVal = 0
End Select

Set 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/

https://www.google.com/search?q=HTML+JavaScript+最前面

ウィンドウを最小化する
http://www.openspc2.org/JavaScript/Ajax/ref/PrototypeWindowClass/ver0.96/ref/window/minimize/index.html

 

 
非同期のmsgbox.vbsとオリジナルダイアログのハイブリッド方面でもゴールを目指せるのかもしれない

https://winactor.com/questions/question/シナリオを止めないでメッセージボックスを出す/

https://winactor.com/questions/?q=オリジナル待機ボックス

https://winactor.com/questions/?q=オリジナル+ボックス

anothersolution 新しいコメントを投稿
回答とコメントは、会員登録(無料)で閲覧できるようになります。