Office UI Themeをレジストリで観察してはいけない
さすがOffice、我々には到底できないことを平然とやってくれる
おっふぃーすのUIテーマを変えるとCustomTaskPaneのホストも変えてくれます。しかしWPFとかでコントロールを作るとコントロールは変わらなくて若干残念な気分になります
単純に言うとBlackテーマにしたらオレオレアドインもBlackテーマにしたいってだけです
しかしUIテーマはVBAなりで拾える気がしません。どうしたらいいのか
それレジストリでできるよ!
TLで嘆いていたら@miru_rhさんが見つけたようです
ぐぐっただけなので未検証 & 2016はどうなんだろ状態だけど
— みる (@miru_rh) 2016, 2月 8
c# - Get current Office theme - Stack Overflowhttps://t.co/3CVj1AOhVQ
さすがですね、私みたいな雑魚とは経験値が違う…
とまあさておき、レジストリで見ると見つかるとのことなので探してみます
Office 2016だとこんな感じの位置です
"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Common\UI Theme"
Commonの中にREG_DWORDで入ってます。下のフォルダではないです
2013の場合は15.0にすればOKですね
ですがここで問題が起こります。数字しか入ってないので対応がわかりません
Theme Configuration Group Policy support for Office 2013 – Anything about IT を見ると2013については
0 = White, 1 = Light Grey, 2 = Dark Grey
となっています。では2016は?ということで検証してみます
結果はこれ
・Office 2016 (ver 16.0.6568.2016)
1 = Colorful
3 = Dark Grey
4 = Black
5 = White
…ぜひとも滅んでほしい感じですね
2がないあたりもよくわかりませんしWhiteが5に飛んでるのもわけわかりません
ですがここで終わりではないわけです。先ほどのはOffice Insider向けにBlackテーマが追加されているバージョンです。ではそれ以前はどうなっていたのでしょうか
結果を見てみましょう
・Office 2016 (ver 16.0.6001.1054)
0 = Colorful
3 = Dark Grey
5 = White
Oh! ミラクルファッキンナンバー!
すごいですね、16.0なら大丈夫とかそんなことはなかったわけですね
そもそもこんな簡単にずれる時点で参照とかしてらんないですね
結論
RenderTargetBitmapを使えばいいんじゃないかな
というわけでただ怒りに任せて書いたみたいな状態です
もし参照したいとか思ってもレジストリだけはやめましょう。ビルド番号まで決められたバージョンでしか使わないというなら止めませんが…
この辺で