しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

システム設定をお手軽に取得

SystemParameters メンバ (System.Windows)

GetSystemMetrics で取れる値をほとんどプロパティとして持つ巨大なクラスです。プロパティが多すぎるので詳細は MSDN を見てもらうとして、通常は P/Invoke じゃないと取れないものばかりです。あからさまに XAML でテーマを作成するためのものばかりですね。

リソースキーも同時に提供してくれてるので、DynamicResource とかで使い放題です。個人的には WorkArea を一番使いそうです。
後、IsSlowMachine ってのは定義が謎すぎると思います。何を基準に判断してるんですかねぇ。

追記

ソースを読んでみるともはや執念ですね、訳がわからないほどキャッシュしまくってます。なかなか興味深いです。

さらに追記

SystemParameters.WorkArea で得られる値は、モニタのサイズより大きい値が返ってくることに気が付きました。なので SystemParameters のソースを眺めてみると、わざわざ幅と高さに +1 していました。

恐らくは DPI を考慮して、小数点以下の切り捨てが起こったときのためにやってるんでしょうが、実際のサイズより大きい値が返るのは良くないかと。

Connect を漁ってみると、しっかりとフィードバックが上がってました。とりあえず星をつけて、ウォッチリスト行きです。