
スキマスイッチ
タイトルと本文になんら関連のない話ですが…
で、それはなぜかというのはもう3年も近く前に本田雅一の週刊モバイル通信のほうで原因が明かされていてこの話は私も知ってたんですが、どーせオレuxtheme.dllにパッチ当ててWatercolor使うし関係ないもんねー、とタカをくくってたら思いっきり教育実習のときに持って帰ったノートマシンにVisualStyle入れるのをわすれてまして、2週間半もLunaで過ごさなければならないというワナが発生。
まぁ、色はMetalicにしておけばまだ我慢出来るのでいいとしても、あの下のスキマが許せません。ついでにいうとイタリックのMS UI Gothicも許せません。ってことで、これを直そうと思い立ったんですが、styleBuilderとかノートマシンに入ってませんし(そもそも使ったこともないし)、さーてどうする。というか、実家じゃネット環境がないのでstyleBuilderをダウンロードしてくることもできない。
となれば、いつものようにバイナリを解析するまでです。とりあえずコイツの本体はC:\WINDOWS\Resources\Themes\LunaにあるLuna.msstylesなので、こいつをバイナリ解析すると……あれ、最初の2文字が"MZ"じゃん。
勘のいい人はもうこれで気がついたかと思いますが(いるよね?)、これ、Windowsの実行ファイルです。拡張子がmsstylesとかいうのになってるだけで、バイナリフォーマットはexeやdllと変わりません。ってことでDependencyWalkerでExport関数を探してみましたが、特にExportしてる関数もないし、他のDLL(kernel32とか)に依存関係もありませんので、これはごく普通のリソースDLLってことになりますね。
となれば、こいつの拡張子をDLLに変えてVS.NETで開いてみると、あぁ、やっぱりStringTableがありました。NormalBlue@[StartMenu::Toolbar]Font=MS UI Gothic, 9
とかいうようなエントリがあるのを見る限り 色&文字の大きさ@[ウィンドウパーツ]プロパティ=値 って感じになっているようなので、とりあえず普通の文字サイズのメタリックのテーマのフォントを変えたいということでNormalMetalic@[Start::Button]Font=MS UI Gothic, 12, bold italicとなってるところをNormalMetallic@[Start::Button]Font=Franklin Gothic Medium, 14, bold italicとかにして上書き(boldつけるかどうかはお好みで)。
で、あとはWindowsをセーフモードで起動してluna.dllをluna.msstylesに上書きします(セーフモードじゃないとファイル保護に引っかかるのはexplorer.exe書き換えの時と同じですね)。すると…
techな話のついでにtasktrapの話もちょこっと。サイトがひとつになったあとにマジメに配布用ページでもつくってちゃんとした公開スタイルをとろうと思います。今手元では0.40 prereleaseってことで、プラグインメニューとか、半透明機能の強化とか、わりとどうでもいい部分が強化されてるぐらいでメインの部分はあんまり変わってないんですが(そもそもメインの部分ってなんだろう)、ぼちぼちウィンドウルールとか、システムメニュー拡張とか、その辺に進出してみようかなーといった感じです。