Delphi Programming / Object Pascal
[掲載 2014年03月31日] [更新 2014年03月31日] Delphi サンプルプログラム集 |
SystemParametersInfo 関数サンプル
S10_システム関係の設定変更を監視 |
動作確認等 |
Windows 7 U64(SP1) + Delphi XE Pro |
|
S10_SystemChangeEvent.zip [535 KB] 2014年03月31日版 (EXE 同梱) |
システム関係の設定変更を監視 - 壁紙の変更を検出 |
SystemParametersInfo 関数サンプルの [01] から [09] までは,システム関係の設定,または設定内容を取得するサンプルでした.
下のコードは,これらのシステム関係の設定変更を監視するサンプルです.
TApplicationEvents コンポーネントの OnSettingChange イベントを使用しています.このイベントで検出可能な項目については,下のリンクの記事を参考にしてください.
ここでは,壁紙の変更だけを検出します.結果の図は,このサンプルを起動した後,デスクトップの [個人設定] メニューから [デスクトップの背景] で,壁紙を変更したものです.このサンプルコードでは,Windows 7 で実装された,スライドショー形式の壁紙の変更は検出できません.
SystemParametersInfo 関数と同様,システム関係の設定変更の監視,あるいは変更の検出には,専用のメッセージ,コールバック関数が用意されている場合があります. |
|
図1
設計時画面
- TApplicationEvents コンポを配置
- OnSettingChange イベントを作成する
|
|
図2
壁紙を変更する前 |
|
図3
壁紙を変更した結果 |
リスト1
TApplicationEvents の OnSettingChange イベントを使用して,システム関係の設定変更を検出 |
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, AppEvnts;
type
TForm1 = class(TForm)
ApplicationEvents1: TApplicationEvents;
procedure ApplicationEvents1SettingChange(Sender: TObject; Flag: Integer;
const Section: string; var Result: Integer);
private
{ Private 宣言 }
OrignalValue : Boolean;
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//=============================================================================
// TApplicationEventsのOnSettingChangeイベント処理
// 壁紙の変更を検出
//=============================================================================
procedure TForm1.ApplicationEvents1SettingChange(Sender: TObject; Flag: Integer;
const Section: string; var Result: Integer);
begin
if Flag = SPI_SETDESKWALLPAPER then begin
MessageBox(Handle, '壁紙が変わりました', '情報', MB_ICONINFORMATION);
end;
end;
end.
|