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 パラメータの定数名は長いので,リストから選択した方が間違い防止になる