Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2010年07月07日] [更新 2010年07月07日] Delphi サンプルプログラム集
SystemParametersInfo 関数サンプル
サンプルで使用している構造体
動作確認等 各ページに動作確認環境を記載
このページの構造体 (レコード型) の定義は Delphi 2010







SystemParametersInfo 関数のサンプルで使用している構造体


SystemParametersInfo 関数のサンプルで使用している各種構造体 (レコード体) の説明です.この内容は Delphi 2010 の Windows.pas 内で定義されているものです.これらの構造体については,一部を除いて,MSDN オンラインの Accessibility Structures のページに説明があります.





ACCESSTIMEOUT 構造体


  PAccessTimeout = ^TAccessTimeout;
  tagACCESSTIMEOUT = packed record
    cbSize: UINT;
    dwFlags: DWORD;
    iTimeOutMSec: DWORD;
  end;
  TAccessTimeout = tagACCESSTIMEOUT;
  ACCESSTIMEOUT = tagACCESSTIMEOUT;


表1

cbSize 構造体のバイト数
dwFlags 動作方法を指定する定数.下表参照
iTimeOutMSec タイムアウト時間 (ミリ秒)


dwFlagの定数

ATF_TIMEOUTON タイムアウトの設定を有効にする
ATF_ONOFFFEEDBACK タイムアウト時に警告音を出す




FILTERKEYS 構造体



  PFilterKeys = ^TFilterKeys;
  tagFILTERKEYS = packed record
    cbSize: UINT;
    dwFlags: DWORD;
    iWaitMSec: DWORD;       { Acceptance Delay}
    iDelayMSec: DWORD;      { Delay Until Repeat}
    iRepeatMSec: DWORD;     { Repeat Rate}
    iBounceMSec: DWORD;     { Debounce Time}
  end;
  TFilterKeys = tagFILTERKEYS;
  FILTERKEYS = tagFILTERKEYS;


表2

cbSize 構造体のバイト数
dwFlags 動作方法を指定する定数.下表参照
iWaitMSec システムが認識するまでユーザがお押し続ける時間 (ミリ秒)
iDelayMSec リピートを開始するまでユーザが押し続ける時間 (ミリ秒)
iRepeatMSec タイムアウト時間 (ミリ秒)
iBounceMSec キーアップ後,同じキーを押した時システムが次のキーと認識できるまでの時間 (ミリ秒)


dwFlagの定数

FKF_FILTERKEYSON フィルタキー機能が有効
FKF_AVAILABLE フィルタキー機能が使用可能
FKF_HOTKEYACTIVE [Shift]キーを8秒間押し続けるとフィルタキーのオン・オフが切り替え可能
FKF_CONFIRMHOTKEY ホットキーを使ってフィルタキーが有効になる前に確認のダイアログボックスを表示する
FKF_HOTKEYSOUND フィルタキーをオン・オフしたとき,音で知らせる
FKF_INDICATOR フィルタキーがオンになったときインディケータを表示する
FKF_CLICKON システムがクリックを認識したとき,音で知らせる




HIGHCONTRAST 構造体



  PHighContrastA = ^THighContrastA;
  PHighContrastW = ^THighContrastW;
  PHighContrast = PHighContrastW;
  tagHIGHCONTRASTA = record
    cbSize: UINT;
    dwFlags: DWORD;
    lpszDefaultScheme: PAnsiChar;
  end;
  tagHIGHCONTRASTW = record
    cbSize: UINT;
    dwFlags: DWORD;
    lpszDefaultScheme: PWideChar;
  end;
  tagHIGHCONTRAST = tagHIGHCONTRASTW;
  THighContrastA = tagHIGHCONTRASTA;
  THighContrastW = tagHIGHCONTRASTW;
  THighContrast = THighContrastW;
  HIGHCONTRASTA = tagHIGHCONTRASTA;
  HIGHCONTRASTW = tagHIGHCONTRASTW;
  HIGHCONTRAST = HIGHCONTRASTW;


表3

cbSize 構造体のバイト数
dwFlags 動作方法を指定する定数.下表参照
lpszDefaultScheme デフォルトのカラースキーマ


dwFlagの定数

HCF_HIGHCONTRASTON ハイコントラストモードがオンになっている
HCF_AVAILABLE ハイコントラストモードが使用可能である
HCF_HOTKEYACTIVE [Alt] + [Shift] + [PrintScreen] でハイコントラストモードをオン・オフにできる
HCF_CONFIRMHOTKEY ハイコントラストモードがオンになったとき確認のためのダイアログボックスを表示する
HCF_HOTKEYSOUND ハイコントラストモードをオン・オフしたとき音で知らせる
HCF_INDICATOR ハイコントラストモードがオンになったときインディケータを表示する
HCF_HOTKEYAVAILABLE ハイコントラストモードを切り替えるホットキーが使える




MOUSEKEYS 構造体



  PMouseKeys = ^TMouseKeys;
  tagMOUSEKEYS = packed record
    cbSize: UINT;
    dwFlags: DWORD;
    iMaxSpeed: DWORD;
    iTimeToMaxSpeed: DWORD;
    iCtrlSpeed: DWORD;
    dwReserved1: DWORD;
    dwReserved2: DWORD;
  end;
  TMouseKeys = tagMOUSEKEYS;
  MOUSEKEYS = tagMOUSEKEYS;


表4

cbSize 構造体のバイト数
dwFlags 動作方法を指定する定数.下表参照
iMaxSpeed 矢印キーを押した時のカーソルの最大移動速度
10 から 360 の値
iTimeToMaxSspeed 同上,最大速度に達するまでの時間 (1,000 ~ 5,000 ミリ秒)
iCtrlSpeed [Ctrl] を押した時の移動増加率.値の範囲不明
MKF_MODIFIERS フラグが有効の場合のみ有効
dwReserved1 常に 0
dwReserved2 常に 0


dwFlagの定数

MKF_MOUSEKEYSON マウスキーがオンになっている
MKF_AVAILABLE マウスキーが使用可能である.
MKF_HOTKEYACTIVE [Alt] + [Shift] + [NumLock] でマウスキーのオン・オフを切り替え可能
MKF_CONFIRMHOTKEY ホットキーを使ってマウスキーをオン・オフしたとき確認のダイアログボックスを表示する
MKF_HOTKEYSOUND ホットキーを使ってマウスキーがオン・オフしたとき音で知らせる
MKF_INDICATOR マウスキーがオンになったときインディケータを表示する
MKF_MODIFIERS [Ctrl] を押すと iCtrlSpeed で指定された比率だけカーソルの速度を上げる.[Shift] を押すとカーソルの移動を遅くする
MKF_REPLACENUMBERS [NumLock] がオンのときのみマウスキーをオンにする




SOUNDSENTRY 構造体



  PSoundsEntryA = ^TSoundsEntryA;
  PSoundsEntryW = ^TSoundsEntryW;
  PSoundsEntry = PSoundsEntryW;
  tagSOUNDSENTRYA = record
    cbSize: UINT;
    dwFlags: DWORD;
    iFSTextEffect: DWORD;
    iFSTextEffectMSec: DWORD;
    iFSTextEffectColorBits: DWORD;
    iFSGrafEffect: DWORD;
    iFSGrafEffectMSec: DWORD;
    iFSGrafEffectColor: DWORD;
    iWindowsEffect: DWORD;
    iWindowsEffectMSec: DWORD;
    lpszWindowsEffectDLL: PAnsiChar;
    iWindowsEffectOrdinal: DWORD;
  end;
  tagSOUNDSENTRYW = record
    cbSize: UINT;
    dwFlags: DWORD;
    iFSTextEffect: DWORD;
    iFSTextEffectMSec: DWORD;
    iFSTextEffectColorBits: DWORD;
    iFSGrafEffect: DWORD;
    iFSGrafEffectMSec: DWORD;
    iFSGrafEffectColor: DWORD;
    iWindowsEffect: DWORD;
    iWindowsEffectMSec: DWORD;
    lpszWindowsEffectDLL: PWideChar;
    iWindowsEffectOrdinal: DWORD;
  end;
  tagSOUNDSENTRY = tagSOUNDSENTRYW;
  TSoundsEntryA = tagSOUNDSENTRYA;
  TSoundsEntryW = tagSOUNDSENTRYW;
  TSoundsEntry = TSoundsEntryW;
  SOUNDSENTRYA = tagSOUNDSENTRYA;
  SOUNDSENTRYW = tagSOUNDSENTRYW;
  SOUNDSENTRY = SOUNDSENTRYW;


表5

cbSize 構造体のバイト数
dwFlags サウンド機能のプロパティを示す定数.下表参照
iFSTextEffect Windows 95/98 のみ.Window NT/2000 では 0
iFSTextEffectMSec Windows 95/98 のみ.Window NT/2000 では 0
iFSTextEffectColorBits Windows 95/98 のみ.Window NT/2000 では 0
iFSGrafEffect Windows 95/98 のみ.Windows NT/2000 では 0
iFSGrafEffectMSec Windows 95/98 のみ.Window NT/2000 では 0
iFSGrafEffectColor Windows 95/98 のみ.Windows NT/2000 では 0
iWindowsEffect 音を発生するアプリケーションの場合のディスプレイへのビジュアル表示.下表のいずれか1つ
iWindowsEffectMSec Windows 95/98 のみ.Window NT/2000 では 0
lpszWindowsEffectDLL 常に nil
iWindowsEffectOrdinal 常に 0


dwFlagの定数

SSF_SOUNDSENTRYON サウンド機能がオン
SSF_AVAILABLE サウンド機能が使用可能である

iWindowEffectの定数

SSWF_NONE ビジュアル効果なし
SSWF_TITLE アクティブウィンドウのキャプションバーを点滅
SSWF_WINDOW アクティブウィンドウを点滅
SSWF_DISPLAY ディスプレイ全体を点滅




STICKYKEYS 構造体



  PStickyKeys = ^TStickyKeys;
  tagSTICKYKEYS = packed record
    cbSize: UINT;
    dwFlags: DWORD;
  end;
  TStickyKeys = tagSTICKYKEYS;
  STICKYKEYS = tagSTICKYKEYS;


表6

cbSize 構造体のバイト数
dwFlags スティックキーのプロパティを指定する定数.下表参照


dwFlagの定数

SKF_STICKYKEYSON スティックキー機能が有効
SKF_AVAILABLE スティックキー機能が使用可能である
SKF_HOTKEYACTIVE ホットキーによってスティックキーのオン・オフを切り替え可能
SKF_CONFIRMHOTKEY ホットキーを使ってスティックキーをオン・オフしたとき確認のダイアログボックスを表示する
SKF_HOTKEYSOUND ホットキーを使ってスティックキーをオン・オフしたとき音で知らせる
SKF_INDICATOR スティックキーがオンになったときインディケータを表示する
SKF_AUDIBLEFEEDBACK スティックキー機能を使って [Shift], [Ctrl], [Alt] を押したとき、音で知らせる
SKF_TRISTATE [Shift], [Ctrl], [Alt] を 2 回押したとき,押し続けていると見なす 3 回目を押したとき,その設定を解除する
SKF_TWOKEYSOFF 別のキーと同時に押している [Shift], [Ctrl], [Alt] をアップしたとき、スティックキーをオフにする




TOGGLEKEYS 構造体



  PToggleKeys = ^TToggleKeys;
  tagTOGGLEKEYS = packed record
    cbSize: UINT;
    dwFlags: DWORD;
  end;
  TToggleKeys = tagTOGGLEKEYS;
  TOGGLEKEYS = tagTOGGLEKEYS;


表7

cbSize 構造体のバイト数
dwFlags 動作方法を指定する定数.下表参照


dwFlagの定数

TKF_TOGGLEKEYSON トグルキー機能が有効
TKF_AVAILABLE トグルキー機能が使用可能である
TKF_HOTKEYACTIVE ホットキーによってトグルキーのオン・オフを切り替え可能
TKF_CONFIRMHOTKEY ホットキーを使ってトグルキーをオン・オフしたとき確認のダイアログボックスを表示する
TKF_HOTKEYSOUND ホットキーを使ってトグルキーをオン・オフしたとき音で知らせる




ICONMETRICS 構造体



  PIconMetricsA = ^TIconMetricsA;
  PIconMetricsW = ^TIconMetricsW;
  PIconMetrics = PIconMetricsW;
  tagICONMETRICSA = record
    cbSize: UINT;
    iHorzSpacing: Integer;
    iVertSpacing: Integer;
    iTitleWrap: Integer;
    lfFont: TLogFontA;
  end;
  tagICONMETRICSW = record
    cbSize: UINT;
    iHorzSpacing: Integer;
    iVertSpacing: Integer;
    iTitleWrap: Integer;
    lfFont: TLogFontW;
  end;
  tagICONMETRICS = tagICONMETRICSW;
  TIconMetricsA = tagICONMETRICSA;
  TIconMetricsW = tagICONMETRICSW;
  TIconMetrics = TIconMetricsW;
  ICONMETRICSA = tagICONMETRICSA;
  ICONMETRICSW = tagICONMETRICSW;
  ICONMETRICS = ICONMETRICSW;


表8

cbSize 構造体のバイト数
iHorzSpacing 水平方向の間隔
iVertSpacing 垂直方向の間隔
iTitleWrap 0のときはキャプションを折り返さない
lfFont キャプションのフォントを指定する LOGFONT 構造体




ANIMATIONINFO 構造体



  PAnimationInfo = ^TAnimationInfo;
  tagANIMATIONINFO = packed record
    cbSize: UINT;
    iMinAnimate: Integer;
  end;
  TAnimationInfo = tagANIMATIONINFO;
  ANIMATIONINFO = tagANIMATIONINFO;


表9

cbSize 構造体のバイト数
iMinAnimate アニメーション効果が有効なとき 0 以外の値




MINIMIZEDMETRICS 構造体



  PMinimizedMetrics = ^TMinimizedMetrics;
  tagMINIMIZEDMETRICS = packed record
    cbSize: UINT;
    iWidth: Integer;
    iHorzGap: Integer;
    iVertGap: Integer;
    iArrange: Integer;
  end;
  TMinimizedMetrics = tagMINIMIZEDMETRICS;
  MINIMIZEDMETRICS = tagMINIMIZEDMETRICS;


表10

cbSize 構造体のバイト数
iWidth アイコン化されたウィンドウの幅
iHorzGap アイコン化されたウィンドウの水平間隔
iVertGap アイコン化されたウィンドウの垂直間隔
iArrange 方向を指定する定数の組み合わせ.下表参照


iArrangeの定数と方向(上4つのいずれかと,下のいずれかの組合わせ.またはARW_HIDE単独指定

ARW_BOTTOMLEFT 左下から
ARW_BOTTOMRIGHT 右下から
ARW_TOPLEFT 左上から
ARW_TOPRIGHT 右上から
ARW_LEFT 左方向へ
(ARW_BOTTOMRIGHT,A RW_TOPRIGHT 指定のとき有効)
ARW_RIGHT 右方向へ
(ARW_BOTTOMLEFT, ARW_TOPLEFT 指定のとき有効)
ARW_UP 上方向へ
(ARW_BOTTOMRIGHT, ARW_BOTTOMLEFT 指定のとき有効)
ARW_DOWN 下方向へ
(ARW_TOPRIGHT, ARW_TOPLEFT 指定のとき有効)
ARW_HIDE 画面領域外に移動して最小化




NONCLIENTMETRICS 構造体


この構造体 (レコード型) の定義は,Delphi 2007 以降とそれより前のバージョンで違います.
Delphi 2007 よりも前のバージョンでは,構造体のサイズの設定は,cbSize は SizeOf で,Delphi 2007 以降では,クラスファンクション (class function) の SizeOf を使用します.これを使用しないとサイズの取得に失敗します.


  PNonClientMetricsA = ^TNonClientMetricsA;
  PNonClientMetricsW = ^TNonClientMetricsW;
  PNonClientMetrics = PNonClientMetricsW;
  tagNONCLIENTMETRICSA = record
    cbSize: UINT;
    iBorderWidth: Integer;
    iScrollWidth: Integer;
    iScrollHeight: Integer;
    iCaptionWidth: Integer;
    iCaptionHeight: Integer;
    lfCaptionFont: TLogFontA;
    iSmCaptionWidth: Integer;
    iSmCaptionHeight: Integer;
    lfSmCaptionFont: TLogFontA;
    iMenuWidth: Integer;
    iMenuHeight: Integer;
    lfMenuFont: TLogFontA;
    lfStatusFont: TLogFontA;
    lfMessageFont: TLogFontA;
    iPaddedBorderWidth: Integer; // Requires Windows Vista or later
    class function SizeOf: Integer; static;
  end;
  tagNONCLIENTMETRICSW = record
    cbSize: UINT;
    iBorderWidth: Integer;
    iScrollWidth: Integer;
    iScrollHeight: Integer;
    iCaptionWidth: Integer;
    iCaptionHeight: Integer;
    lfCaptionFont: TLogFontW;
    iSmCaptionWidth: Integer;
    iSmCaptionHeight: Integer;
    lfSmCaptionFont: TLogFontW;
    iMenuWidth: Integer;
    iMenuHeight: Integer;
    lfMenuFont: TLogFontW;
    lfStatusFont: TLogFontW;
    lfMessageFont: TLogFontW;
    iPaddedBorderWidth: Integer; // Requires Windows Vista or later
    class function SizeOf: Integer; static;
  end;
  tagNONCLIENTMETRICS = tagNONCLIENTMETRICSW;
  TNonClientMetricsA = tagNONCLIENTMETRICSA;
  TNonClientMetricsW = tagNONCLIENTMETRICSW;
  TNonClientMetrics = TNonClientMetricsW;
  NONCLIENTMETRICSA = tagNONCLIENTMETRICSA;
  NONCLIENTMETRICSW = tagNONCLIENTMETRICSW;
  NONCLIENTMETRICS = NONCLIENTMETRICSW;


表11

cbSize 構造体のバイト数
iBoaderWidth 境界線の幅
iScrollHeight 垂直スクロールバーの幅
iScrollWidth 水平スクロールバーの幅
iCaptionWidth タイトルバーの幅
iCaptionHeight タイトルバーの高さ
lfCaptionFont タイトルバーのフォント (LOGFONT 構造体)
iSMCaptionWidth 小さいタイトルバーの幅
iSMCaptionHeight 小さいタイトルバーの高さ
lfSMCaptionFont 小さいタイトルバーのフォント (LOGFONT 構造体)
iMenuWidth メニューバーの幅
iMenuHeight メニューバーの高さ
lfMenuFont メニューバーのフォント (LOGFONT 構造体)
lfStatusFont ステータスバーのフォント (LOGFONT 構造体)
lfMessageFont メッセージのフォント (LOGFONT 構造体)




LOGFONT 構造体



  PLogFontA = ^TLogFontA;
  PLogFontW = ^TLogFontW;
  PLogFont = PLogFontW;
  tagLOGFONTA = record
    lfHeight: Longint;
    lfWidth: Longint;
    lfEscapement: Longint;
    lfOrientation: Longint;
    lfWeight: Longint;
    lfItalic: Byte;
    lfUnderline: Byte;
    lfStrikeOut: Byte;
    lfCharSet: Byte;
    lfOutPrecision: Byte;
    lfClipPrecision: Byte;
    lfQuality: Byte;
    lfPitchAndFamily: Byte;
    lfFaceName: array[0..LF_FACESIZE - 1] of AnsiChar;
  end;
  tagLOGFONTW = record
    lfHeight: Longint;
    lfWidth: Longint;
    lfEscapement: Longint;
    lfOrientation: Longint;
    lfWeight: Longint;
    lfItalic: Byte;
    lfUnderline: Byte;
    lfStrikeOut: Byte;
    lfCharSet: Byte;
    lfOutPrecision: Byte;
    lfClipPrecision: Byte;
    lfQuality: Byte;
    lfPitchAndFamily: Byte;
    lfFaceName: array[0..LF_FACESIZE - 1] of WideChar;
  end;
  tagLOGFONT = tagLOGFONTW;
  TLogFontA = tagLOGFONTA;
  TLogFontW = tagLOGFONTW;
  TLogFont = TLogFontW;
  LOGFONTA = tagLOGFONTA;
  LOGFONTW = tagLOGFONTW;
  LOGFONT = LOGFONTW;


表12

lfHeight 文字の論理高さ
1 以上の時は,デバイス単位に変換して使用可能なフォントのセル高さに一致させる
0の時,使用可能なフォントのデフォルトの高さを使う
0 未満の時,絶対値を使う以外は 1 以上のときと同じ
lfWidth 文字の論理幅
0 のときは標準幅
lfEscapement 回転角度 (1/10 度単位).lfOrientation と同じ値にする
角度は文字列全体のベースラインとX軸との角度
lfOrientation 回転角度 (1/10 度単位).lfEscpement と同じ値にする
lfWeight 文字の線幅の定数数
0 のときはデフォルト値
100,200,300,... 大きくなる程太くなる
lfItalic イタリック体のとき 1
lfUnderline アンダーライン付きのとき 1
lfStrikeOut 横線付きのとき 1
lfCharSet 文字セットの定数 (SHIFTJIS_CHARSET 等)
lfOutPrecision フォントの特性を一致させる方法を指定する定数
デフォルトは0
lfClipPrecision 文字の一部がクリッピング領域外にあるときの処理方法
通常0
lfQualiy 通常0
lfPitchAndFamily 下位2ビットにフォントのピッチ
上位4ビットにフォントファミリ
DEFAULT_PITCH (= 0) はデフォルトのピッチ
FIXED_PITCH (=1) は固定ピッチ
VARIABLE_PITCH (=2) は可変ピッチ
lfFaceName タイプフェース名