Delphi Programming / Object Pascal
[掲載 2010年07月07日] [更新 2010年07月07日] Delphi サンプルプログラム集 |
SystemParametersInfo 関数サンプル
S06_スクリーンの電力管理関係 |
動作確認等 |
Windows XP(SP3) + Delphi 2010(UP5) Pro |
|
S06_SystemParametersInfo_Power.zip [767 KB] 2010年07月07日版 (EXE 同梱) |
Windows Vista 以降では,このページの uiAction パラメータはサポートされていません.
テストの結果,Windows XP では動作しましたので,掲載しておきます. |
スクリーンの電力停止モードの有効性の取得と設定のサンプルです.この値が有効になっていると,設定されたいる時間が経過するスクリーンの電源がオフとなります.
この値が有効になっていないと,スクリーンの電力停止タイムアウトの設定は無効です. |
表1
uiAction パラメータは SystemParametersInfo 関数の第 1 引数
uiParam は第 2 引数で,pvParam は第 3 引数 |
uiAction パラメータ |
uiParam と pvParam パラメータ |
SPI_GETPOWEROFFACTIVE |
取得
uiParam は 0
pvParam は BOOL 型変数へのポインタ
有効な場合は 0 以外の値,無効な場合は0 |
SPI_SETPOWEROFFACTIVE |
設定
uiParam を 1 にすると有効,0 にすると無効
pvParam は nil |
|
図1
起動すると現在の設定を表示 |
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
CheckBox1: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private 宣言 }
OrignalValue : Boolean;
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//=============================================================================
// プログラムを起動したら現在の設定を取得しておく
//=============================================================================
procedure TForm1.FormCreate(Sender: TObject);
begin
SystemParametersInfo(SPI_GETPOWEROFFACTIVE,
0,
@OrignalValue,
0);
CheckBox1.Checked := OrignalValue;
end;
//=============================================================================
// [設定]ボタン
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
begin
Screen.Cursor := crHourGlass;
SystemParametersInfo(SPI_SETPOWEROFFACTIVE,
Ord(CheckBox1.Checked),
nil,
SPIF_SENDCHANGE);
Screen.Cursor := crDefault;
end;
//=============================================================================
// 元に戻す
//=============================================================================
procedure TForm1.Button2Click(Sender: TObject);
begin
Screen.Cursor := crHourGlass;
SystemParametersInfo(SPI_SETPOWEROFFACTIVE,
Ord(OrignalValue),
nil,
SPIF_SENDCHANGE);
FormCreate(nil);
Screen.Cursor := crDefault;
end;
end.
スクリーンの電力停止まで時間の取得と設定サンプルです.電力停止機能が有効になっていないと機能しません.0 にすると電力停止しません. |
表2
uiAction パラメータは SystemParametersInfo 関数の第 1 引数
uiParam は第 2 引数で,pvParam は第 3 引数 |
uiAction パラメータ |
uiParam と pvParam パラメータ |
SPI_GETPOWEROFFTIMEOUT |
取得
uiParam は 0
pvParam は INT 型変数へのポインタ
この変数にタイムアウト値が秒単位で格納される |
SPI_SETPOWEROFFTIMEOUT |
設定
uiParam にタイムアウト値を秒単位で指定
pvParam は nil |
|
図2
起動すると現在の設定を表示 |
リスト2
スクリーンの電力停止モードタイムアウト値 |
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, Spin;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
SpinEdit1: TSpinEdit;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private 宣言 }
OrignalValue : Integer;
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//=============================================================================
// プログラムを起動したら現在の設定を取得しておく
//=============================================================================
procedure TForm1.FormCreate(Sender: TObject);
begin
//現在の設定値読出し
SystemParametersInfo(SPI_GETPOWEROFFTIMEOUT,
0,
@OrignalValue,
0);
SpinEdit1.Value := OrignalValue;
end;
//=============================================================================
// [設定]ボタン
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
NewValue : Integer;
SetValue : Integer;
begin
Screen.Cursor := crHourGlass;
//設定した値をセット
NewValue := SpinEdit1.Value;
SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT,
NewValue,
nil,
SPIF_SENDCHANGE);
//設定の確認
SystemParametersInfo(SPI_GETPOWEROFFTIMEOUT,
0,
@SetValue,
0);
SpinEdit1.Value := SetValue;
Screen.Cursor := crDefault;
end;
//=============================================================================
// 元に戻す
//=============================================================================
procedure TForm1.Button2Click(Sender: TObject);
begin
Screen.Cursor := crHourGlass;
SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT,
OrignalValue,
nil,
SPIF_SENDCHANGE);
FormCreate(nil);
Screen.Cursor := crDefault;
end;
end.
|