Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2010年07月07日] [更新 2013年11月09日] Delphi サンプルプログラム集
SystemParametersInfo 関数サンプル
概要
動作確認等 各ページに動作確認環境を記載



  • 2010年07月07日
  • 以前掲載してた同関数の記事はパラメータの説明だけであった。これを種類別に別ページにして、サンプルコードを全面的に追加 (ここは本来サンプルプログラム集のページなので)
  • 説明記事内の間違いをかなり修正




概要


SystemParametersInfo 関数は主に、ユーザが Windows 環境をカスタマイズするために利用するツールを作成する際に使用するために提供されている Windows API 関数です。
この関数を使用して取得または設定できる内容は、別の API 関数が用意されている場合もあります。その一部が [システム情報] のページにあります。
Delphi の Windows.pas には、当サイトのサンプル記事以外に定義されているものもあります。これらは Windows 95 専用、Windows 2000 以上では動作しないもの、あるいは Windows Vista 以降に追加されたものがありますが、筆者は調査、テストをしていません。

サンプルの分類は、MSDN の記事によるものです。必ずしもコントロールパネルの設定項目に一致するとは限りません。MSDN オンラインの記事も、最初にこの記事を掲載した当時と内容に変更があります。おそらく Vista 以降の OS に対応した内容に逐次書き換えているのではないかと思われます。
それにしても、OS が新しくなるたびに、コントロールパネルで前と同じ機能の場所を見つけるにのかなり苦労します。

本サンプルプログラム集では、SystemParametersInfo 関数の全ての機能をテストして掲載しているわけではありません。また、MSDN オンラインの SystemParametersInfo の英語版の記事には、日本語版には記述されていない機能の説明があります。英語版での確認をお勧めします。






SystemParametersInfo 関数の引数


順番に下表のようになっています。実行後、成功すると 0 以外の値が、失敗すると 0 が返ります。拡張エラー情報を取得するには、GetLastError 関数を使います。成功というのは、設定や取得が正常に実行できたという意味ではありません。関数自体がエラーなしに実行できたという意味です。

これらの引数の説明に DWORD 値がありますが、実際のサンプルではほとんど整数型、またはそのポインタを使っています。不具合があれば適時修正してください。


表1
SystemParametersInfo 関数の引数

uiAction 各サンプルプログラムの記事参照
uiParam uiAction のパラメータ値に応じて値を指定する
特に指定がなければ 0 とする
pvParam uiAction の値に応じた値を指定する
特に指定がなければ nil とする
変数名の先頭に p があるように、ポインタで取得、設定する
fWinIni ユーザープロファイルを更新するかどうか等を次の表の値で指定する
指定しない場合は 0 とする
次回のシステム起動時にも設定を有効にするには、ユーザプロファイルに更新内容を書き込むために、SPIF_UPDATEINIFILE を含めておく


表2
SystemParametersInfo 関数の fWinIni 引数の値

SPIF_UPDATEINIFILE 新しい設定を、ユーザープロファイルに書き込む
次回起動時にも設定を有効にするにはこのフラグを指定する

uiAction の項目によっては、この指定がなくてもユーザプロはファイルに書き込み、次回起動時に有効になるものがあるので注意
SPIF_SENDCHANGE 内容を更新した後、WM_SETTIMGCHANGE メッセージでトップレベルのウィンドウに変更が生じたことを通知する
SPIF_SENDWININICHANGE SPIF_SENDCHANG と同じ


  • 図1
  • uiAction パラメータの定数名は長いので、リストから選択した方が間違い防止になる