空談録

http://artfulplace.net/blogs/ からひっこしつつ

Office UI Themeをレジストリで観察してはいけない

さすがOffice、我々には到底できないことを平然とやってくれる

おっふぃーすのUIテーマを変えるとCustomTaskPaneのホストも変えてくれます。しかしWPFとかでコントロールを作るとコントロールは変わらなくて若干残念な気分になります
単純に言うとBlackテーマにしたらオレオレアドインもBlackテーマにしたいってだけです

しかしUIテーマはVBAなりで拾える気がしません。どうしたらいいのか

それレジストリでできるよ!

TLで嘆いていたら@miru_rhさんが見つけたようです

さすがですね、私みたいな雑魚とは経験値が違う…

とまあさておき、レジストリで見ると見つかるとのことなので探してみます
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を使えばいいんじゃないかな


というわけでただ怒りに任せて書いたみたいな状態です
もし参照したいとか思ってもレジストリだけはやめましょう。ビルド番号まで決められたバージョンでしか使わないというなら止めませんが…

この辺で