Win32 API 日本語リファレンス
ホームUI.WindowsAndMessaging › SystemParametersInfoA

SystemParametersInfoA

関数
システム全体のパラメータを取得または設定する(ANSI版)。
DLLUSER32.dll文字セットANSI (-A)呼出規約winapiSetLastErrorあり対応OSWindows 2000 以降

シグネチャ

// USER32.dll  (ANSI / -A)
#include <windows.h>

BOOL SystemParametersInfoA(
    SYSTEM_PARAMETERS_INFO_ACTION uiAction,
    DWORD uiParam,
    void* pvParam,   // optional
    SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS fWinIni
);

パラメーター

名前方向説明
uiActionSYSTEM_PARAMETERS_INFO_ACTIONin

取得または設定するシステム全体のパラメーターです。指定可能な値は、関連するパラメーターごとに次の表にまとめられています。

  • ユーザー補助パラメーター
  • デスクトップパラメーター
  • アイコンパラメーター
  • 入力パラメーター
  • メニューパラメーター
  • 電源パラメーター
  • スクリーンセーバーパラメーター
  • タイムアウトパラメーター
  • UI 効果パラメーター
  • ウィンドウパラメーター

次は、ユーザー補助パラメーターです。

ユーザー補助パラメーター 意味
SPI_GETACCESSTIMEOUT
0x003C
ユーザー補助機能に関連付けられたタイムアウト期間に関する情報を取得します。pvParam パラメーターは、情報を受け取る ACCESSTIMEOUT 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(ACCESSTIMEOUT) に設定してください。
SPI_GETAUDIODESCRIPTION
0x0074
音声解説が有効か無効かを判別します。pvParam パラメーターは AUDIODESCRIPTION 構造体へのポインターです。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(AUDIODESCRIPTION) に設定してください。

視覚障害のあるユーザーが映像コンテンツの音声を聞くことは可能ですが、映像には対応する音声がないアクションが数多く存在します。映像で何が起きているかを具体的に説明する音声解説は、こうしたユーザーがコンテンツをより理解する助けになります。このフラグを使用すると、音声解説が有効になっているかどうか、およびどの言語で有効かを判別できます。

Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_GETCLIENTAREAANIMATION
0x1042
アニメーションが有効か無効かを判別します。pvParam パラメーターは、アニメーションが有効な場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。

点滅、ちらつき、明滅、移動するコンテンツなどの表示機能は、光過敏性てんかんのあるユーザーに発作を引き起こす可能性があります。このフラグを使用すると、クライアント領域でこのようなアニメーションが無効になっているかどうかを判別できます。

Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_GETDISABLEOVERLAPPEDCONTENT
0x1040
オーバーラップコンテンツが有効か無効かを判別します。pvParam パラメーターは、有効な場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。

背景画像、テクスチャ付き背景、文書の透かし、アルファブレンディング、透明度などの表示機能は、前景と背景のコントラストを低下させ、ロービジョンのユーザーが画面上のオブジェクトを見えにくくする場合があります。このフラグを使用すると、このようなオーバーラップコンテンツが無効になっているかどうかを判別できます。

Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_GETFILTERKEYS
0x0032
FilterKeys ユーザー補助機能に関する情報を取得します。pvParam パラメーターは、情報を受け取る FILTERKEYS 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(FILTERKEYS) に設定してください。
SPI_GETFOCUSBORDERHEIGHT
0x2010
DrawFocusRect で描画されるフォーカス四角形の上端と下端の高さ (ピクセル単位) を取得します。pvParam パラメーターは UINT 値を指している必要があります。

Windows 2000: このパラメーターはサポートされていません。

SPI_GETFOCUSBORDERWIDTH
0x200E
DrawFocusRect で描画されるフォーカス四角形の左端と右端の幅 (ピクセル単位) を取得します。pvParam パラメーターは UINT を指している必要があります。

Windows 2000: このパラメーターはサポートされていません。

SPI_GETHIGHCONTRAST
0x0042
HighContrast ユーザー補助機能に関する情報を取得します。pvParam パラメーターは、情報を受け取る HIGHCONTRAST 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(HIGHCONTRAST) に設定してください。

一般的な説明については、「解説」を参照してください。

SPI_GETLOGICALDPIOVERRIDE
0x009E
Windows 8 がハードウェアの既定のスケーリングプラトーを使用してアプリを表示するか、次に高いプラトーに移行するかを判別する値を取得します。この値は、PC 設定コンピューターの簡単操作セクションにある現在の「画面上のすべてのものを大きくする」設定に基づきます。1 はオン、0 はオフです。

アプリは、複数のスケーリングプラトー (100%、140%、180%) のそれぞれに対してテキストおよびイメージリソースを提供できます。特定のスケール向けに最適化された個別のリソースを提供することで、サイズ変更による歪みを回避できます。Windows 8 は、画面サイズやピクセル密度などの多数の要因に基づいて適切なスケーリングプラトーを決定します。「画面上のすべてのものを大きくする」が選択されている場合 (SPI_GETLOGICALDPIOVERRIDE が値 1 を返す場合)、Windows は次に高いプラトーのリソースを使用します。たとえば、Windows が SCALE_100_PERCENT のスケールを使用すべきと判断したハードウェアの場合、このオーバーライドにより、他の制約に違反しない限り、Windows は SCALE_140_PERCENT のスケール値を使用します。

注意 この値は使用しないでください。今後のバージョンの Windows では変更されるか、使用できなくなる可能性があります。代わりに、優先スケーリング係数を取得するには、GetScaleFactorForDevice 関数または DisplayProperties クラスを使用してください。デスクトップアプリケーションは、スケール係数ではなくデスクトップの論理 DPI を使用する必要があります。デスクトップの論理 DPI は、GetDeviceCaps 関数で取得できます。
SPI_GETMESSAGEDURATION
0x2016
通知ポップアップを表示する時間 (秒単位) を取得します。pvParam パラメーターは、メッセージの表示時間を受け取る ULONG を指している必要があります。

視覚障害のあるユーザーや、ADHD やディスレクシアなどの認知的な状態にあるユーザーは、通知メッセージのテキストを読むのにより長い時間を必要とする場合があります。このフラグを使用すると、メッセージの表示時間を取得できます。

Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_GETMOUSECLICKLOCK
0x101E
Mouse ClickLock 機能の状態を取得します。pvParam パラメーターは、有効な場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。詳細については、Mouse Input Overview を参照してください。

Windows 2000: このパラメーターはサポートされていません。

SPI_GETMOUSECLICKLOCKTIME
0x2008
プライマリマウスボタンがロックされるまでの遅延時間を取得します。pvParam パラメーターは、遅延時間 (ミリ秒単位) を受け取る DWORD を指している必要があります。これは SPI_SETMOUSECLICKLOCKTRUE に設定されている場合にのみ有効です。詳細については、Mouse Input Overview を参照してください。

Windows 2000: このパラメーターはサポートされていません。

SPI_GETMOUSEKEYS
0x0036
MouseKeys ユーザー補助機能に関する情報を取得します。pvParam パラメーターは、情報を受け取る MOUSEKEYS 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(MOUSEKEYS) に設定してください。
SPI_GETMOUSESONAR
0x101C
Mouse Sonar 機能の状態を取得します。pvParam パラメーターは、有効な場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。詳細については、Mouse Input Overview を参照してください。

Windows 2000: このパラメーターはサポートされていません。

SPI_GETMOUSEVANISH
0x1020
Mouse Vanish 機能の状態を取得します。pvParam パラメーターは、有効な場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。詳細については、Mouse Input Overview を参照してください。

Windows 2000: このパラメーターはサポートされていません。

SPI_GETSCREENREADER
0x0046
スクリーンレビューユーティリティが実行中かどうかを判別します。スクリーンレビューユーティリティは、テキスト情報を音声合成装置や点字ディスプレイなどの出力デバイスに送ります。このフラグが設定されている場合、アプリケーションは、本来であれば情報をグラフィカルに表示する状況において、テキスト情報を提供する必要があります。

pvParam パラメーターは、スクリーンレビューユーティリティが実行中の場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数へのポインターです。

注意 Windows に付属するスクリーンリーダーであるナレーターは、SPI_SETSCREENREADER フラグや SPI_GETSCREENREADER フラグを設定しません。
SPI_GETSERIALKEYS
0x003E
このパラメーターはサポートされていません。

Windows Server 2003 および Windows XP/2000: ユーザーはこの設定をコントロールパネルから制御する必要があります。

SPI_GETSHOWSOUNDS
0x0038
ShowSounds ユーザー補助フラグがオンかオフかを判別します。オンの場合、ユーザーは、本来であれば情報を音声形式のみで提示する状況において、アプリケーションが情報を視覚的に提示することを要求します。pvParam パラメーターは、この機能がオンの場合は TRUE、オフの場合は FALSE を受け取る BOOL 変数を指している必要があります。

この値の使用は、GetSystemMetricsSM_SHOWSOUNDS で呼び出すことと同等です。こちらの呼び出しが推奨されます。

SPI_GETSOUNDSENTRY
0x0040
SoundSentry ユーザー補助機能に関する情報を取得します。pvParam パラメーターは、情報を受け取る SOUNDSENTRY 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(SOUNDSENTRY) に設定してください。
SPI_GETSTICKYKEYS
0x003A
StickyKeys ユーザー補助機能に関する情報を取得します。pvParam パラメーターは、情報を受け取る STICKYKEYS 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(STICKYKEYS) に設定してください。
SPI_GETTOGGLEKEYS
0x0034
ToggleKeys ユーザー補助機能に関する情報を取得します。pvParam パラメーターは、情報を受け取る TOGGLEKEYS 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(TOGGLEKEYS) に設定してください。
SPI_SETACCESSTIMEOUT
0x003D
ユーザー補助機能に関連付けられたタイムアウト期間を設定します。pvParam パラメーターは、新しいパラメーターを格納した ACCESSTIMEOUT 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(ACCESSTIMEOUT) に設定してください。
SPI_SETAUDIODESCRIPTION
0x0075
音声解説機能をオンまたはオフにします。pvParam パラメーターは AUDIODESCRIPTION 構造体へのポインターです。

視覚障害のあるユーザーが映像コンテンツの音声を聞くことは可能ですが、映像には対応する音声がないアクションが数多く存在します。映像で何が起きているかを具体的に説明する音声解説は、こうしたユーザーがコンテンツをより理解する助けになります。このフラグを使用すると、提供されている言語で音声解説を有効または無効にできます。

Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETCLIENTAREAANIMATION
0x1043
クライアント領域のアニメーションをオンまたはオフにします。pvParam パラメーターは BOOL 変数です。クライアント領域でアニメーションやその他の一時的な効果を有効にするには pvParamTRUE に、無効にするには FALSE に設定してください。

点滅、ちらつき、明滅、移動するコンテンツなどの表示機能は、光過敏性てんかんのあるユーザーに発作を引き起こす可能性があります。このフラグを使用すると、このようなアニメーションをすべて有効または無効にできます。

Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETDISABLEOVERLAPPEDCONTENT
0x1041
オーバーラップコンテンツ (背景画像や透かしなど) をオンまたはオフにします。pvParam パラメーターは BOOL 変数です。オーバーラップコンテンツを無効にするには pvParamTRUE に、有効にするには FALSE に設定してください。

背景画像、テクスチャ付き背景、文書の透かし、アルファブレンディング、透明度などの表示機能は、前景と背景のコントラストを低下させ、ロービジョンのユーザーが画面上のオブジェクトを見えにくくする場合があります。このフラグを使用すると、このようなオーバーラップコンテンツをすべて有効または無効にできます。

Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETFILTERKEYS
0x0033
FilterKeys ユーザー補助機能のパラメーターを設定します。pvParam パラメーターは、新しいパラメーターを格納した FILTERKEYS 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(FILTERKEYS) に設定してください。
SPI_SETFOCUSBORDERHEIGHT
0x2011
DrawFocusRect で描画されるフォーカス四角形の上端と下端の高さを、pvParam パラメーターの値に設定します。

Windows 2000: このパラメーターはサポートされていません。

SPI_SETFOCUSBORDERWIDTH
0x200F
DrawFocusRect で描画されるフォーカス四角形の左端と右端の高さを、pvParam パラメーターの値に設定します。

Windows 2000: このパラメーターはサポートされていません。

SPI_SETHIGHCONTRAST
0x0043
HighContrast ユーザー補助機能のパラメーターを設定します。pvParam パラメーターは、新しいパラメーターを格納した HIGHCONTRAST 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(HIGHCONTRAST) に設定してください。
SPI_SETLOGICALDPIOVERRIDE
0x009F
使用しないでください。
SPI_SETMESSAGEDURATION
0x2017
通知ポップアップを表示する時間 (秒単位) を設定します。pvParam パラメーターはメッセージの表示時間を指定します。

視覚障害のあるユーザーや、ADHD やディスレクシアなどの認知的な状態にあるユーザーは、通知メッセージのテキストを読むのにより長い時間を必要とする場合があります。このフラグを使用すると、メッセージの表示時間を設定できます。

Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETMOUSECLICKLOCK
0x101F
Mouse ClickLock ユーザー補助機能をオンまたはオフにします。この機能は、プライマリマウスボタンがクリックされ、SPI_SETMOUSECLICKLOCKTIME で指定された時間だけ押し続けられたときに、そのボタンを一時的にロックします。pvParam パラメーターは、オンの場合は TRUE、オフの場合は FALSE を指定します。既定はオフです。詳細については、「解説」および About Mouse Input を参照してください。

Windows 2000: このパラメーターはサポートされていません。

SPI_SETMOUSECLICKLOCKTIME
0x2009
プライマリマウスボタンがロックされるまでの遅延時間を調整します。uiParam パラメーターは 0 に設定する必要があります。pvParam パラメーターは、遅延時間 (ミリ秒単位) を指定する DWORD を指します。たとえば、1 秒の遅延の場合は 1000 を指定します。既定は 1200 です。詳細については、Mouse Input Overview を参照してください。

Windows 2000: このパラメーターはサポートされていません。

SPI_SETMOUSEKEYS
0x0037
MouseKeys ユーザー補助機能のパラメーターを設定します。pvParam パラメーターは、新しいパラメーターを格納した MOUSEKEYS 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(MOUSEKEYS) に設定してください。
SPI_SETMOUSESONAR
0x101D
Sonar ユーザー補助機能をオンまたはオフにします。この機能は、ユーザーが CTRL キーを押して離したときに、マウスポインターの周囲に複数の同心円を短時間表示します。pvParam パラメーターは、オンの場合は TRUE、オフの場合は FALSE を指定します。既定はオフです。詳細については、Mouse Input Overview を参照してください。

Windows 2000: このパラメーターはサポートされていません。

SPI_SETMOUSEVANISH
0x1021
Vanish 機能をオンまたはオフにします。この機能は、ユーザーが入力するとマウスポインターを非表示にし、マウスを動かすとポインターを再表示します。pvParam パラメーターは、オンの場合は TRUE、オフの場合は FALSE を指定します。既定はオフです。詳細については、Mouse Input Overview を参照してください。

Windows 2000: このパラメーターはサポートされていません。

SPI_SETSCREENREADER
0x0047
スクリーンレビューユーティリティが実行中かどうかを判別します。uiParam パラメーターは、オンの場合は TRUE、オフの場合は FALSE を指定します。
注意 Windows に付属するスクリーンリーダーであるナレーターは、SPI_SETSCREENREADER フラグや SPI_GETSCREENREADER フラグを設定しません。
SPI_SETSERIALKEYS
0x003F
このパラメーターはサポートされていません。

Windows Server 2003 および Windows XP/2000: ユーザーはこの設定をコントロールパネルから制御する必要があります。

SPI_SETSHOWSOUNDS
0x0039
ShowSounds ユーザー補助機能をオンまたはオフにします。uiParam パラメーターは、オンの場合は TRUE、オフの場合は FALSE を指定します。
SPI_SETSOUNDSENTRY
0x0041
SoundSentry ユーザー補助機能のパラメーターを設定します。pvParam パラメーターは、新しいパラメーターを格納した SOUNDSENTRY 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(SOUNDSENTRY) に設定してください。
SPI_SETSTICKYKEYS
0x003B
StickyKeys ユーザー補助機能のパラメーターを設定します。pvParam パラメーターは、新しいパラメーターを格納した STICKYKEYS 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(STICKYKEYS) に設定してください。
SPI_SETTOGGLEKEYS
0x0035
ToggleKeys ユーザー補助機能のパラメーターを設定します。pvParam パラメーターは、新しいパラメーターを格納した TOGGLEKEYS 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(TOGGLEKEYS) に設定してください。
 

次は、デスクトップパラメーターです。

デスクトップパラメーター 意味
SPI_GETCLEARTYPE
0x1048
ClearType が有効かどうかを判別します。pvParam パラメーターは、ClearType が有効な場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。

ClearType は、液晶ディスプレイ (LCD) モニターでのテキストの読みやすさを向上させるソフトウェア技術です。

Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_GETDESKWALLPAPER
0x0073
デスクトップの壁紙のビットマップファイルのフルパスを取得します。pvParam パラメーターは、null で終わるパス文字列を受け取るバッファーを指している必要があります。uiParam パラメーターには、pvParam バッファーのサイズ (文字数単位) を設定してください。返される文字列は MAX_PATH 文字を超えません。デスクトップの壁紙がない場合、返される文字列は空になります。
SPI_GETDROPSHADOW
0x1024
ドロップシャドウ効果が有効かどうかを判別します。pvParam パラメーターは、有効な場合は TRUE、無効な場合は FALSE を返す BOOL 変数を指している必要があります。

Windows 2000: このパラメーターはサポートされていません。

SPI_GETFLATMENU
0x1022
ネイティブの User メニューがフラットメニューの外観になっているかどうかを判別します。pvParam パラメーターは、フラットメニューの外観が設定されている場合は TRUE、そうでない場合は FALSE を返す BOOL 変数を指している必要があります。

Windows 2000: このパラメーターはサポートされていません。

SPI_GETFONTSMOOTHING
0x004A
フォントスムージング機能が有効かどうかを判別します。この機能は、フォントのアンチエイリアシングを使用し、異なるグレーレベルでピクセルを描画することで、フォントの曲線をより滑らかに見せます。

pvParam パラメーターは、この機能が有効な場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。

SPI_GETFONTSMOOTHINGCONTRAST
0x200C
ClearType スムージングで使用されるコントラスト値を取得します。pvParam パラメーターは、情報を受け取る UINT を指している必要があります。有効なコントラスト値は 1000 から 2200 です。既定値は 1400 です。

Windows 2000: このパラメーターはサポートされていません。

SPI_GETFONTSMOOTHINGORIENTATION
0x2012
フォントスムージングの方向を取得します。pvParam パラメーターは、情報を受け取る UINT を指している必要があります。指定可能な値は FE_FONTSMOOTHINGORIENTATIONBGR (青-緑-赤) と FE_FONTSMOOTHINGORIENTATIONRGB (赤-緑-青) です。

Windows XP/2000: このパラメーターは Windows XP with SP2 までサポートされていません。

SPI_GETFONTSMOOTHINGTYPE
0x200A
フォントスムージングの種類を取得します。pvParam パラメーターは、情報を受け取る UINT を指している必要があります。指定可能な値は FE_FONTSMOOTHINGSTANDARDFE_FONTSMOOTHINGCLEARTYPE です。

Windows 2000: このパラメーターはサポートされていません。

SPI_GETWORKAREA
0x0030
プライマリディスプレイモニター上の作業領域のサイズを取得します。作業領域とは、システムのタスクバーやアプリケーションのデスクトップツールバーによって隠されていない画面の部分です。pvParam パラメーターは、物理ピクセルサイズで表された作業領域の座標を受け取る RECT 構造体を指している必要があります。呼び出し元の DPI 仮想化モードは、この出力に影響しません。

プライマリディスプレイモニター以外のモニターの作業領域を取得するには、GetMonitorInfo 関数を呼び出してください。

SPI_SETCLEARTYPE
0x1049
ClearType をオンまたはオフにします。pvParam パラメーターは BOOL 変数です。ClearType を有効にするには pvParamTRUE に、無効にするには FALSE に設定してください。

ClearType は、LCD モニターでのテキストの読みやすさを向上させるソフトウェア技術です。

Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETCURSORS
0x0057
システムカーソルを再読み込みします。uiParam パラメーターを 0 に、pvParam パラメーターを NULL に設定してください。
SPI_SETDESKPATTERN
0x0015
WIN.INI ファイルの Pattern= 設定を Windows に読み取らせることで、現在のデスクトップパターンを設定します。
SPI_SETDESKWALLPAPER
0x0014
注意 SPI_SETDESKWALLPAPER フラグが使用された場合、SystemParametersInfo は、エラーがない限り (指定されたファイルが存在しない場合など) TRUE を返します。
SPI_SETDROPSHADOW
0x1025
ドロップシャドウ効果を有効または無効にします。ドロップシャドウ効果を有効にするには pvParamTRUE に、無効にするには FALSE に設定してください。また、ウィンドウクラススタイルに CS_DROPSHADOW が含まれている必要があります。

Windows 2000: このパラメーターはサポートされていません。

SPI_SETFLATMENU
0x1023
ネイティブの User メニューのフラットメニュー外観を有効または無効にします。フラットメニュー外観を有効にするには pvParamTRUE に、無効にするには FALSE に設定してください。

有効な場合、メニューバーはメニューバーの背景に COLOR_MENUBAR、メニューポップアップの背景に COLOR_MENU、現在のメニュー選択の塗りつぶしに COLOR_MENUHILIGHT、現在のメニュー選択の輪郭に COLOR_HILIGHT を使用します。無効な場合、メニューは Windows 2000 と同じメトリックおよび色を使用して描画されます。

Windows 2000: このパラメーターはサポートされていません。

SPI_SETFONTSMOOTHING
0x004B
フォントスムージング機能を有効または無効にします。この機能は、フォントのアンチエイリアシングを使用し、異なるグレーレベルでピクセルを描画することで、フォントの曲線をより滑らかに見せます。

この機能を有効にするには、uiParam パラメーターを TRUE に設定します。無効にするには、uiParamFALSE に設定します。

SPI_SETFONTSMOOTHINGCONTRAST
0x200D
ClearType スムージングで使用されるコントラスト値を設定します。pvParam パラメーターはコントラスト値です。有効なコントラスト値は 1000 から 2200 です。既定値は 1400 です。

SPI_SETFONTSMOOTHINGTYPEFE_FONTSMOOTHINGCLEARTYPE に設定する必要があります。

Windows 2000: このパラメーターはサポートされていません。

SPI_SETFONTSMOOTHINGORIENTATION
0x2013
フォントスムージングの方向を設定します。pvParam パラメーターは、FE_FONTSMOOTHINGORIENTATIONBGR (青-緑-赤) または FE_FONTSMOOTHINGORIENTATIONRGB (赤-緑-青) のいずれかです。

Windows XP/2000: このパラメーターは Windows XP with SP2 までサポートされていません。

SPI_SETFONTSMOOTHINGTYPE
0x200B
フォントスムージングの種類を設定します。pvParam パラメーターは、標準のアンチエイリアシングを使用する場合は FE_FONTSMOOTHINGSTANDARDClearType を使用する場合は FE_FONTSMOOTHINGCLEARTYPE のいずれかです。既定は FE_FONTSMOOTHINGSTANDARD です。

SPI_SETFONTSMOOTHING も設定する必要があります。

Windows 2000: このパラメーターはサポートされていません。

SPI_SETWORKAREA
0x002F
作業領域のサイズを設定します。作業領域とは、システムのタスクバーやアプリケーションのデスクトップツールバーによって隠されていない画面の部分です。pvParam パラメーターは、仮想画面座標で表された新しい作業領域の四角形を指定する RECT 構造体へのポインターです。複数のディスプレイモニターを備えたシステムでは、この関数は指定された四角形を含むモニターの作業領域を設定します。
 

次は、アイコンパラメーターです。

アイコンパラメーター 意味
SPI_GETICONMETRICS
0x002D
アイコンに関連付けられたメトリックを取得します。pvParam パラメーターは、情報を受け取る ICONMETRICS 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(ICONMETRICS) に設定してください。
SPI_GETICONTITLELOGFONT
0x001F
現在のアイコンタイトルフォントの論理フォント情報を取得します。uiParam パラメーターは LOGFONT 構造体のサイズを指定し、pvParam パラメーターは、値を設定する LOGFONT 構造体を指している必要があります。
SPI_GETICONTITLEWRAP
0x0019
アイコンタイトルの折り返しが有効かどうかを判別します。pvParam パラメーターは、有効な場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。
SPI_ICONHORIZONTALSPACING
0x000D
アイコンセルの幅 (ピクセル単位) を設定または取得します。システムはこの四角形を使用して、大きいアイコン表示でアイコンを配置します。

この値を設定するには、uiParam を新しい値に設定し、pvParamNULL に設定します。この値を SM_CXICON より小さくすることはできません。

この値を取得するには、pvParam が現在の値を受け取る整数を指している必要があります。

SPI_ICONVERTICALSPACING
0x0018
アイコンセルの高さ (ピクセル単位) を設定または取得します。

この値を設定するには、uiParam を新しい値に設定し、pvParamNULL に設定します。この値を SM_CYICON より小さくすることはできません。

この値を取得するには、pvParam が現在の値を受け取る整数を指している必要があります。

SPI_SETICONMETRICS
0x002E
アイコンに関連付けられたメトリックを設定します。pvParam パラメーターは、新しいパラメーターを格納した ICONMETRICS 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(ICONMETRICS) に設定してください。
SPI_SETICONS
0x0058
システムアイコンを再読み込みします。uiParam パラメーターを 0 に、pvParam パラメーターを NULL に設定してください。
SPI_SETICONTITLELOGFONT
0x0022
アイコンタイトルに使用されるフォントを設定します。uiParam パラメーターは LOGFONT 構造体のサイズを指定し、pvParam パラメーターは LOGFONT 構造体を指している必要があります。
SPI_SETICONTITLEWRAP
0x001A
アイコンタイトルの折り返しをオンまたはオフにします。uiParam パラメーターは、オンの場合は TRUE、オフの場合は FALSE を指定します。
 

次は、入力パラメーターです。これらには、キーボード、マウス、タッチパッド、ペン、入力言語、および警告ビープ音に関するパラメーターが含まれます。

入力パラメーター 意味
SPI_GETBEEP
0x0001
警告ビープ音がオンかどうかを判別します。

pvParam パラメーターは、ビープ音がオンの場合は TRUE、オフの場合は FALSE を受け取る BOOL 変数を指している必要があります。

SPI_GETBLOCKSENDINPUTRESETS
0x1026
アプリケーションが SendInput 関数を呼び出してキーボードまたはマウスの入力をシミュレートすることで、スクリーンセーバーのタイマーをリセットできるかどうかを示す BOOL を取得します。pvParam パラメーターは、シミュレートされた入力がブロックされる場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。
SPI_GETCONTACTVISUALIZATION
0x2018
現在のコンタクトの視覚化の設定を取得します。pvParam パラメーターは、設定を受け取る ULONG 変数を指している必要があります。詳細については、Contact Visualization を参照してください。
SPI_GETDEFAULTINPUTLANG
0x0059
システム既定の入力言語の入力ロケール識別子を取得します。pvParam パラメーターは、この値を受け取る HKL 変数を指している必要があります。詳細については、Languages, Locales, and Keyboard Layouts を参照してください。
SPI_GETGESTUREVISUALIZATION
0x201A
現在のジェスチャの視覚化の設定を取得します。pvParam パラメーターは、設定を受け取る ULONG 変数を指している必要があります。詳細については、Gesture Visualization を参照してください。
SPI_GETKEYBOARDCUES
0x100A
メニューアクセスキーが常に下線付きで表示されるかどうかを判別します。pvParam パラメーターは、メニューアクセスキーが常に下線付きで表示される場合は TRUE、キーボードでメニューがアクティブ化されたときにのみ下線付きで表示される場合は FALSE を受け取る BOOL 変数を指している必要があります。
SPI_GETKEYBOARDDELAY
0x0016
キーボードのリピート遅延設定を取得します。これは 0 (約 250 ミリ秒の遅延) から 3 (約 1 秒の遅延) の範囲の値です。各値に関連付けられた実際の遅延は、ハードウェアによって異なる場合があります。pvParam パラメーターは、設定を受け取る整数変数を指している必要があります。
SPI_GETKEYBOARDPREF
0x0044
ユーザーがマウスの代わりにキーボードに依存しており、本来は非表示となるキーボードインターフェイスをアプリケーションに表示させたいかどうかを判別します。pvParam パラメーターは、ユーザーがキーボードに依存している場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。
SPI_GETKEYBOARDSPEED
0x000A
キーボードのリピート速度設定を取得します。これは 0 (1 秒あたり約 2.5 回のリピート) から 31 (1 秒あたり約 30 回のリピート) の範囲の値です。実際のリピート速度はハードウェアに依存し、線形スケールから最大 20% まで変動する場合があります。pvParam パラメーターは、設定を受け取る DWORD 変数を指している必要があります。
SPI_GETMOUSE
0x0003
2 つのマウスしきい値とマウスの加速を取得します。pvParam パラメーターは、これらの値を受け取る 3 つの整数の配列を指している必要があります。詳細については、mouse_event を参照してください。
SPI_GETMOUSEHOVERHEIGHT
0x0064
TrackMouseEventWM_MOUSEHOVER メッセージを生成するために、マウスポインターがとどまっている必要のある四角形の高さ (ピクセル単位) を取得します。pvParam パラメーターは、高さを受け取る UINT 変数を指している必要があります。
SPI_GETMOUSEHOVERTIME
0x0066
TrackMouseEventWM_MOUSEHOVER メッセージを生成するために、マウスポインターがホバー四角形内にとどまっている必要のある時間 (ミリ秒単位) を取得します。pvParam パラメーターは、時間を受け取る UINT 変数を指している必要があります。
SPI_GETMOUSEHOVERWIDTH
0x0062
TrackMouseEventWM_MOUSEHOVER メッセージを生成するために、マウスポインターがとどまっている必要のある四角形の幅 (ピクセル単位) を取得します。pvParam パラメーターは、幅を受け取る UINT 変数を指している必要があります。
SPI_GETMOUSESPEED
0x0070
現在のマウス速度を取得します。マウス速度は、マウスの移動距離に基づいてポインターがどれだけ移動するかを決定します。pvParam パラメーターは、1 (最も遅い) から 20 (最も速い) の範囲の値を受け取る整数を指している必要があります。既定値は 10 です。この値は、マウスのコントロールパネルアプリケーションを使用してエンドユーザーが、または SPI_SETMOUSESPEED を使用してアプリケーションが設定できます。
SPI_GETMOUSETRAILS
0x005E
Mouse Trails 機能が有効かどうかを判別します。この機能は、カーソルの軌跡を短時間表示してすばやく消去することで、マウスカーソルの動きの視認性を向上させます。

pvParam パラメーターは、値を受け取る整数変数を指している必要があります。値が 0 または 1 の場合、この機能は無効です。値が 1 より大きい場合、この機能は有効で、その値は軌跡に描画されるカーソルの数を示します。uiParam パラメーターは使用されません。

Windows 2000: このパラメーターはサポートされていません。

SPI_GETMOUSEWHEELROUTING
0x201C
マウスホイール入力のルーティング設定を取得します。ルーティング設定は、マウスホイール入力がフォーカスのあるアプリ (フォアグラウンド) に送られるか、マウスカーソルの下にあるアプリに送られるかを決定します。

pvParam パラメーターは、ルーティングオプションを受け取る DWORD 変数を指している必要があります。uiParam パラメーターは使用されません。

値が 0 (MOUSEWHEEL_ROUTING_FOCUS) の場合、マウスホイール入力はフォーカスのあるアプリに送られます。値が 1 (MOUSEWHEEL_ROUTING_HYBRID) の場合、マウスホイール入力はフォーカスのあるアプリ (デスクトップアプリ) またはマウスポインターの下にあるアプリ (Windows ストアアプリ) に送られます。

Windows 10 以降: 値が 2 (MOUSEWHEEL_ROUTING_MOUSE_POS) の場合、マウスホイール入力はマウスポインターの下にあるアプリに送られます。これは新しい既定値であり、MOUSEWHEEL_ROUTING_HYBRID は設定で利用できなくなりました。

SPI_GETPENVISUALIZATION
0x201E
現在のペンジェスチャの視覚化の設定を取得します。pvParam パラメーターは、設定を受け取る ULONG 変数を指している必要があります。詳細については、Pen Visualization を参照してください。
SPI_GETSNAPTODEFBUTTON
0x005F
既定のボタンへのスナップ機能が有効かどうかを判別します。有効な場合、マウスカーソルはダイアログボックスの既定のボタン (OK適用 など) に自動的に移動します。pvParam パラメーターは、この機能がオンの場合は TRUE、オフの場合は FALSE を受け取る BOOL 変数を指している必要があります。
SPI_GETSYSTEMLANGUAGEBAR
0x1050
Windows 8 以降: システムの言語バーが有効か無効かを判別します。pvParam パラメーターは、言語バーが有効な場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。
SPI_GETTHREADLOCALINPUTSETTINGS
0x104E
Windows 8 以降: アクティブな入力設定のスコープがローカル (スレッドごと、TRUE) かグローバル (セッション、FALSE) かを判別します。pvParam パラメーターは BOOL 変数を指している必要があります。
SPI_GETTOUCHPADPARAMETERS
0x00AE
Windows 11 バージョン 24H2 以降: ユーザー設定やタッチパッドに関連するシステム情報など、高精度タッチパッドに関する詳細を取得します。

pvParam パラメーターは TOUCHPAD_PARAMETERS 構造体を指している必要があります。

uiParam パラメーターには構造体のサイズを指定する必要があります。

TOUCHPAD_PARAMETERS 構造体の versionNumber フィールドの値は、使用する構造体のバージョンに対応する適切な値に設定する必要があります。

SPI_GETWHEELSCROLLCHARS
0x006C
水平マウスホイールが動かされたときにスクロールする文字数を取得します。pvParam パラメーターは、行数を受け取る UINT 変数を指している必要があります。既定値は 3 です。
SPI_GETWHEELSCROLLLINES
0x0068
垂直マウスホイールが動かされたときにスクロールする行数を取得します。pvParam パラメーターは、行数を受け取る UINT 変数を指している必要があります。既定値は 3 です。
SPI_SETBEEP
0x0002
警告ビープ音をオンまたはオフにします。uiParam パラメーターは、オンの場合は TRUE、オフの場合は FALSE を指定します。
SPI_SETBLOCKSENDINPUTRESETS
0x1027
アプリケーションが SendInput 関数を呼び出してキーボードまたはマウスの入力をシミュレートすることで、スクリーンセーバーのタイマーをリセットできるかどうかを判別します。uiParam パラメーターは、シミュレートされた入力によってスクリーンセーバーが解除されない場合は TRUE、シミュレートされた入力によってスクリーンセーバーが解除される場合は FALSE を指定します。
SPI_SETCONTACTVISUALIZATION
0x2019
現在のコンタクトの視覚化の設定を行います。pvParam パラメーターは、設定を識別する ULONG 変数を指している必要があります。詳細については、Contact Visualization を参照してください。
注意 コンタクトの視覚化が無効になっている場合、ジェスチャの視覚化を有効にすることはできません。
SPI_SETDEFAULTINPUTLANG
0x005A
システムシェルおよびアプリケーションの既定の入力言語を設定します。指定する言語は、現在のシステム文字セットを使用して表示できる必要があります。pvParam パラメーターは、既定の言語の入力ロケール識別子を格納した HKL 変数を指している必要があります。詳細については、Languages, Locales, and Keyboard Layouts を参照してください。
SPI_SETDOUBLECLICKTIME
0x0020
マウスのダブルクリック時間を uiParam パラメーターの値に設定します。uiParam の値が 5000 ミリ秒を超える場合、システムはダブルクリック時間を 5000 ミリ秒に設定します。

ダブルクリック時間とは、ダブルクリックの 1 回目と 2 回目のクリックの間に許容される最大ミリ秒数です。ダブルクリック時間を設定するには、SetDoubleClickTime 関数を呼び出すこともできます。現在のダブルクリック時間を取得するには、GetDoubleClickTime 関数を呼び出してください。

SPI_SETDOUBLECLKHEIGHT
0x001E
ダブルクリック四角形の高さを uiParam パラメーターの値に設定します。

ダブルクリック四角形とは、ダブルクリックの 2 回目のクリックがダブルクリックとして登録されるために、そのクリックが収まる必要のある四角形です。

ダブルクリック四角形の高さを取得するには、GetSystemMetricsSM_CYDOUBLECLK フラグで呼び出してください。

SPI_SETDOUBLECLKWIDTH
0x001D
ダブルクリック四角形の幅を uiParam パラメーターの値に設定します。

ダブルクリック四角形とは、ダブルクリックの 2 回目のクリックがダブルクリックとして登録されるために、そのクリックが収まる必要のある四角形です。

ダブルクリック四角形の幅を取得するには、GetSystemMetricsSM_CXDOUBLECLK フラグで呼び出してください。

SPI_SETGESTUREVISUALIZATION
0x201B
現在のジェスチャの視覚化の設定を行います。pvParam パラメーターは、設定を識別する ULONG 変数を指している必要があります。詳細については、Gesture Visualization を参照してください。
注意 コンタクトの視覚化が無効になっている場合、ジェスチャの視覚化を有効にすることはできません。
SPI_SETKEYBOARDCUES
0x100B
メニューアクセスキー文字の下線表示を設定します。pvParam パラメーターは BOOL 変数です。メニューアクセスキーを常に下線付きで表示するには pvParamTRUE に、キーボードからメニューがアクティブ化されたときにのみメニューアクセスキーを下線付きで表示するには FALSE に設定してください。
SPI_SETKEYBOARDDELAY
0x0017
キーボードのリピート遅延設定を行います。uiParam パラメーターには 0、1、2、または 3 を指定する必要があります。0 は最短の遅延 (約 250 ミリ秒)、3 は最長の遅延 (約 1 秒) を設定します。各値に関連付けられた実際の遅延は、ハードウェアによって異なる場合があります。
SPI_SETKEYBOARDPREF
0x0045
キーボードの優先設定を行います。uiParam パラメーターは、ユーザーがマウスの代わりにキーボードに依存しており、本来は非表示となるキーボードインターフェイスをアプリケーションに表示させたい場合は TRUE を指定します。それ以外の場合、uiParamFALSE です。
SPI_SETKEYBOARDSPEED
0x000B
キーボードのリピート速度設定を行います。uiParam パラメーターには、0 (1 秒あたり約 2.5 回のリピート) から 31 (1 秒あたり約 30 回のリピート) の範囲の値を指定する必要があります。実際のリピート速度はハードウェアに依存し、線形スケールから最大 20% まで変動する場合があります。uiParam が 31 より大きい場合、パラメーターは 31 に設定されます。
SPI_SETLANGTOGGLE
0x005B
入力言語を切り替えるためのホットキーセットを設定します。uiParam パラメーターと pvParam パラメーターは使用されません。この値は、レジストリを再度読み取ることで、キーボードのプロパティシートのショートカットキーを設定します。このフラグを使用する前に、レジストリを設定しておく必要があります。レジストリ内のパスは HKEY_CURRENT_USER\Keyboard Layout\Toggle

です。有効な値は "1" = ALT+SHIFT、"2" = CTRL+SHIFT、"3" = なし です。
SPI_SETMOUSE
0x0004
2 つのマウスしきい値とマウスの加速を設定します。pvParam パラメーターは、これらの値を指定する 3 つの整数の配列を指している必要があります。詳細については、mouse_event を参照してください。
SPI_SETMOUSEBUTTONSWAP
0x0021
左右のマウスボタンの意味を入れ替える、または元に戻します。uiParam パラメーターは、ボタンの意味を入れ替える場合は TRUE、元の意味に戻す場合は FALSE を指定します。

現在の設定を取得するには、GetSystemMetricsSM_SWAPBUTTON フラグで呼び出してください。

SPI_SETMOUSEHOVERHEIGHT
0x0065
TrackMouseEventWM_MOUSEHOVER メッセージを生成するために、マウスポインターがとどまっている必要のある四角形の高さ (ピクセル単位) を設定します。uiParam パラメーターに新しい高さを設定してください。
SPI_SETMOUSEHOVERTIME
0x0067
TrackMouseEventWM_MOUSEHOVER メッセージを生成するために、マウスポインターがホバー四角形内にとどまっている必要のある時間 (ミリ秒単位) を設定します。これは、TrackMouseEvent の呼び出しで dwHoverTime パラメーターに HOVER_DEFAULT を渡した場合にのみ使用されます。uiParam パラメーターに新しい時間を設定してください。

指定する時間は USER_TIMER_MAXIMUMUSER_TIMER_MINIMUM の間である必要があります。uiParamUSER_TIMER_MINIMUM より小さい場合、関数は USER_TIMER_MINIMUM を使用します。uiParamUSER_TIMER_MAXIMUM より大きい場合、関数は USER_TIMER_MAXIMUM を使用します。

Windows Server 2003 および Windows XP: オペレーティングシステムは、Windows Server 2003 with SP1 および Windows XP with SP2 まで USER_TIMER_MAXIMUMUSER_TIMER_MINIMUM の使用を強制しません。

SPI_SETMOUSEHOVERWIDTH
0x0063
TrackMouseEventWM_MOUSEHOVER メッセージを生成するために、マウスポインターがとどまっている必要のある四角形の幅 (ピクセル単位) を設定します。uiParam パラメーターに新しい幅を設定してください。
SPI_SETMOUSESPEED
0x0071
現在のマウス速度を設定します。pvParam パラメーターは、1 (最も遅い) から 20 (最も速い) の間の整数です。既定値は 10 です。この値は通常、マウスのコントロールパネルアプリケーションを使用して設定します。
SPI_SETMOUSETRAILS
0x005D
Mouse Trails 機能を有効または無効にします。この機能は、カーソルの軌跡を短時間表示してすばやく消去することで、マウスカーソルの動きの視認性を向上させます。

この機能を無効にするには、uiParam パラメーターを 0 または 1 に設定します。有効にするには、uiParam を 1 より大きい値に設定し、軌跡に描画するカーソルの数を示します。

Windows 2000: このパラメーターはサポートされていません。

SPI_SETMOUSEWHEELROUTING
0x201D
マウスホイール入力のルーティング設定を行います。ルーティング設定は、マウスホイール入力がフォーカスのあるアプリ (フォアグラウンド) に送られるか、マウスカーソルの下にあるアプリに送られるかを決定します。

pvParam パラメーターは、ルーティングオプションを受け取る DWORD 変数を指している必要があります。uiParam パラメーターを 0 に設定してください。

値が 0 (MOUSEWHEEL_ROUTING_FOCUS) の場合、マウスホイール入力はフォーカスのあるアプリに送られます。値が 1 (MOUSEWHEEL_ROUTING_HYBRID) の場合、マウスホイール入力はフォーカスのあるアプリ (デスクトップアプリ) またはマウスポインターの下にあるアプリ (Windows ストアアプリ) に送られます。

Windows 10 以降: 値が 2 (MOUSEWHEEL_ROUTING_MOUSE_POS) の場合、マウスホイール入力はマウスポインターの下にあるアプリに送られます。これは新しい既定値であり、MOUSEWHEEL_ROUTING_HYBRID は設定で利用できなくなりました。

SPI_SETPENVISUALIZATION
0x201F
現在のペンジェスチャの視覚化の設定を行います。pvParam パラメーターは、設定を識別する ULONG 変数を指している必要があります。詳細については、Pen Visualization を参照してください。
SPI_SETSNAPTODEFBUTTON
0x0060
既定のボタンへのスナップ機能を有効または無効にします。有効な場合、マウスカーソルはダイアログボックスの既定のボタン (OK適用 など) に自動的に移動します。この機能を有効にするには uiParam パラメーターを TRUE に、無効にするには FALSE に設定してください。ダイアログマネージャーがマウスカーソルを配置できるように、アプリケーションはダイアログボックスを表示する際に ShowWindow 関数を使用する必要があります。
SPI_SETSYSTEMLANGUAGEBAR
0x1051
Windows 8 以降: レガシ言語バー機能をオンまたはオフにします。pvParam パラメーターは BOOL 変数へのポインターです。レガシ言語バーを有効にするには pvParamTRUE に、無効にするには FALSE に設定してください。このフラグは、レガシ言語バーが入力スイッチャーに置き換えられ、既定でオフになっている Windows 8 でサポートされます。レガシ言語バーをオンにする機能は互換性のために提供されており、入力スイッチャーには影響しません。
SPI_SETTHREADLOCALINPUTSETTINGS
0x104F
Windows 8 以降: アクティブな入力設定のスコープがローカル (スレッドごと、TRUE) かグローバル (セッション、FALSE) かを判別します。pvParam パラメーターは、PVOID にキャストされた BOOL 変数である必要があります。
SPI_SETTOUCHPADPARAMETERS
0x00AF
Windows 11 バージョン 24H2 以降: ユーザー設定やタッチパッドに関連するシステム情報など、高精度タッチパッドに関する詳細を設定します。

pvParam パラメーターは TOUCHPAD_PARAMETERS 構造体を指している必要があります。

uiParam パラメーターには構造体のサイズを指定する必要があります。

TOUCHPAD_PARAMETERS 構造体の versionNumber フィールドの値は、使用する構造体のバージョンに対応する適切な値に設定する必要があります。

SPI_SETWHEELSCROLLCHARS
0x006D
水平マウスホイールが動かされたときにスクロールする文字数を設定します。文字数は uiParam パラメーターから設定されます。
SPI_SETWHEELSCROLLLINES
0x0069
垂直マウスホイールが動かされたときにスクロールする行数を設定します。行数は uiParam パラメーターから設定されます。

行数は、修飾キーを使用せずにマウスホイールを回したときにスクロールする行数の推奨値です。数が 0 の場合、スクロールは発生しません。スクロールする行数が表示可能な行数より大きい場合、特に WHEEL_PAGESCROLL (UINT_MAX として #define されています) の場合、スクロール操作はスクロールバーのページダウンまたはページアップ領域を 1 回クリックしたものとして解釈されます。

 

次は、メニューパラメーターです。

メニューパラメーター 意味
SPI_GETMENUDROPALIGNMENT
0x001B
ポップアップメニューが、対応するメニューバー項目を基準として左揃えか右揃えかを判別します。pvParam パラメーターは、右揃えの場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。
SPI_GETMENUFADE
0x1012
メニューのフェードアニメーションが有効かどうかを判別します。pvParam パラメーターは、フェードアニメーションが有効な場合は TRUE、無効な場合は FALSE を受け取る BOOL 変数を指している必要があります。フェードアニメーションが無効な場合、メニューはスライドアニメーションを使用します。このフラグは、メニューアニメーションが有効でない限り無視されます。メニューアニメーションは SPI_SETMENUANIMATION フラグを使用して有効にできます。詳細については、AnimateWindow を参照してください。
SPI_GETMENUSHOWDELAY
0x006A
マウスカーソルがサブメニュー項目の上にあるときに、システムがショートカットメニューを表示するまで待機する時間 (ミリ秒単位) を取得します。pvParam パラメーターは、遅延時間を受け取る DWORD 変数を指している必要があります。
SPI_SETMENUDROPALIGNMENT
0x001C
ポップアップメニューの配置値を設定します。uiParam パラメーターは、右揃えの場合は TRUE、左揃えの場合は FALSE を指定します。
SPI_SETMENUFADE
0x1013
メニューのフェードアニメーションを有効または無効にします。メニューのフェード効果を有効にするには pvParamTRUE に、無効にするには FALSE に設定してください。フェードアニメーションが無効な場合、メニューはスライドアニメーションを使用します。メニューのフェード効果は、システムの色深度が 256 色を超える場合にのみ可能です。このフラグは、SPI_MENUANIMATION も設定されていない限り無視されます。詳細については、AnimateWindow を参照してください。
SPI_SETMENUSHOWDELAY
0x006B
マウスカーソルがサブメニュー項目の上にあるときに、システムがショートカットメニューを表示するまで待機する時間 (ミリ秒単位) を uiParam に設定します。
 

次は、電源パラメーターです。

Windows Server 2008 および Windows Vista 以降では、これらの電源パラメーターはサポートされていません。代わりに、現在のディスプレイ電源状態を判別するには、アプリケーションは GUID_MONITOR_POWER_STATE 通知に登録する必要があります。現在のディスプレイ電源オフタイムアウトを判別するには、アプリケーションは GUID_VIDEO_POWERDOWN_TIMEOUT 電源設定の変更通知に登録する必要があります。詳細については、Registering for Power Events を参照してください。

Windows Server 2003 および Windows XP/2000: 現在のディスプレイ電源状態を判別するには、次の電源パラメーターを使用してください。

電源パラメーター 意味
SPI_GETLOWPOWERACTIVE
0x0053
このパラメーターはサポートされていません。

Windows Server 2003 および Windows XP/2000: スクリーンセーバーの低電力フェーズが有効かどうかを判別します。pvParam パラメーターは、有効な場合は TRUE、無効な場合は FALSE を受け取る BOOL 変数を指している必要があります。このフラグは 32 ビットアプリケーションでのみサポートされています。

SPI_GETLOWPOWERTIMEOUT
0x004F
このパラメーターはサポートされていません。

Windows Server 2003 および Windows XP/2000: スクリーンセーバーの低電力フェーズのタイムアウト値を取得します。pvParam パラメーターは、値を受け取る整数変数を指している必要があります。このフラグは 32 ビットアプリケーションでのみサポートされています。

SPI_GETPOWEROFFACTIVE
0x0054
このパラメーターはサポートされていません。スクリーンセーバーの電源オフフェーズが有効な場合、GUID_VIDEO_POWERDOWN_TIMEOUT 電源設定は 0 より大きくなります。

Windows Server 2003 および Windows XP/2000: スクリーンセーバーの電源オフフェーズが有効かどうかを判別します。pvParam パラメーターは、有効な場合は TRUE、無効な場合は FALSE を受け取る BOOL 変数を指している必要があります。このフラグは 32 ビットアプリケーションでのみサポートされています。

SPI_GETPOWEROFFTIMEOUT
0x0050
このパラメーターはサポートされていません。代わりに、GUID_VIDEO_POWERDOWN_TIMEOUT 電源設定を確認してください。

Windows Server 2003 および Windows XP/2000: スクリーンセーバーの電源オフフェーズのタイムアウト値を取得します。pvParam パラメーターは、値を受け取る整数変数を指している必要があります。このフラグは 32 ビットアプリケーションでのみサポートされています。

SPI_SETLOWPOWERACTIVE
0x0055
このパラメーターはサポートされていません。

Windows Server 2003 および Windows XP/2000: スクリーンセーバーの低電力フェーズを有効化または無効化します。有効化するには uiParam を 1 に、無効化するには 0 に設定します。pvParam パラメーターは NULL である必要があります。このフラグは 32 ビットアプリケーションでのみサポートされています。

SPI_SETLOWPOWERTIMEOUT
0x0051
このパラメーターはサポートされていません。

Windows Server 2003 および Windows XP/2000: スクリーンセーバーの低電力フェーズのタイムアウト値 (秒単位) を設定します。uiParam パラメーターは新しい値を指定します。pvParam パラメーターは NULL である必要があります。このフラグは 32 ビットアプリケーションでのみサポートされています。

SPI_SETPOWEROFFACTIVE
0x0056
このパラメーターはサポートされていません。代わりに、GUID_VIDEO_POWERDOWN_TIMEOUT 電源設定を設定してください。

Windows Server 2003 および Windows XP/2000: スクリーンセーバーの電源オフフェーズを有効化または無効化します。有効化するには uiParam を 1 に、無効化するには 0 に設定します。pvParam パラメーターは NULL である必要があります。このフラグは 32 ビットアプリケーションでのみサポートされています。

SPI_SETPOWEROFFTIMEOUT
0x0052
このパラメーターはサポートされていません。代わりに、GUID_VIDEO_POWERDOWN_TIMEOUT 電源設定をタイムアウト値に設定してください。

Windows Server 2003 および Windows XP/2000: スクリーンセーバーの電源オフフェーズのタイムアウト値 (秒単位) を設定します。uiParam パラメーターは新しい値を指定します。pvParam パラメーターは NULL である必要があります。このフラグは 32 ビットアプリケーションでのみサポートされています。

 

次は、スクリーンセーバーパラメーターです。

スクリーンセーバーパラメーター 意味
SPI_GETSCREENSAVEACTIVE
0x0010
スクリーンセーバーが有効かどうかを判別します。pvParam パラメーターは、スクリーンセーバーが有効な場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。

Windows 7、Windows Server 2008 R2 および Windows 2000: スクリーンセーバーが有効でない場合でも、この関数は TRUE を返します。

SPI_GETSCREENSAVERRUNNING
0x0072
呼び出し元プロセスのウィンドウステーションでスクリーンセーバーが現在実行中かどうかを判別します。pvParam パラメーターは、スクリーンセーバーが現在実行中の場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。スクリーンセーバーを実行できるのは、対話型ウィンドウステーション WinSta0 のみであることに注意してください。
SPI_GETSCREENSAVESECURE
0x0076
スクリーンセーバーが Windows デスクトップを表示するためにパスワードを必要とするかどうかを判別します。pvParam パラメーターは、スクリーンセーバーがパスワードを必要とする場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。uiParam パラメーターは無視されます。

Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_GETSCREENSAVETIMEOUT
0x000E
スクリーンセーバーのタイムアウト値 (秒単位) を取得します。pvParam パラメーターは、値を受け取る整数変数を指している必要があります。
SPI_SETSCREENSAVEACTIVE
0x0011
スクリーンセーバーの状態を設定します。uiParam パラメーターは、スクリーンセーバーを有効化する場合は TRUE、無効化する場合は FALSE を指定します。

マシンが省電力モードまたはシステムロック状態に入っている場合、ERROR_OPERATION_IN_PROGRESS 例外が発生します。

SPI_SETSCREENSAVESECURE
0x0077
スクリーンセーバーが Windows デスクトップを表示するためにユーザーにパスワードの入力を要求するかどうかを設定します。uiParam パラメーターは BOOL 変数です。pvParam パラメーターは無視されます。パスワードを要求するには uiParamTRUE に、要求しないには FALSE に設定してください。

マシンが省電力モードまたはシステムロック状態に入っている場合、ERROR_OPERATION_IN_PROGRESS 例外が発生します。

Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETSCREENSAVETIMEOUT
0x000F
スクリーンセーバーのタイムアウト値を uiParam パラメーターの値に設定します。この値は、スクリーンセーバーが起動するまでにシステムがアイドル状態である必要のある時間 (秒単位) です。

マシンが省電力モードまたはシステムロック状態に入っている場合、ERROR_OPERATION_IN_PROGRESS 例外が発生します。

 

次は、アプリケーションおよびサービス向けのタイムアウトパラメーターです。

タイムアウトパラメーター 意味
SPI_GETHUNGAPPTIMEOUT
0x0078
システムがスレッドを応答なしとみなすまでに、そのスレッドがメッセージをディスパッチせずに経過できるミリ秒数を取得します。pvParam パラメーターは、値を受け取る整数変数を指している必要があります。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_GETWAITTOKILLTIMEOUT
0x007A
シャットダウン要求に応答しないアプリケーションをシステムが終了するまで待機するミリ秒数を取得します。pvParam パラメーターは、値を受け取る整数変数を指している必要があります。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_GETWAITTOKILLSERVICETIMEOUT
0x007C
シャットダウン要求に応答しないサービスをサービスコントロールマネージャーが終了するまで待機するミリ秒数を取得します。pvParam パラメーターは、値を受け取る整数変数を指している必要があります。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETHUNGAPPTIMEOUT
0x0079
ハングアプリケーションのタイムアウトを uiParam パラメーターの値に設定します。この値は、システムがスレッドを応答なしとみなすまでに、そのスレッドがメッセージをディスパッチせずに経過できるミリ秒数です。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETWAITTOKILLTIMEOUT
0x007B
アプリケーションのシャットダウン要求のタイムアウトを uiParam パラメーターの値に設定します。この値は、シャットダウン要求に応答しないアプリケーションをシステムが終了するまで待機するミリ秒数です。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETWAITTOKILLSERVICETIMEOUT
0x007D
サービスのシャットダウン要求のタイムアウトを uiParam パラメーターの値に設定します。この値は、シャットダウン要求に応答しないサービスをシステムが終了するまで待機するミリ秒数です。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

 

次は、UI 効果です。SPI_SETUIEFFECTS 値は、すべての UI 効果を一度に有効または無効にするために使用します。次の表には、UI 効果の値の完全な一覧が含まれます。

UI 効果パラメーター 意味
SPI_GETCOMBOBOXANIMATION
0x1004
コンボボックスのスライドオープン効果が有効かどうかを判別します。pvParam パラメーターは、有効な場合は TRUE、無効な場合は FALSE を受け取る BOOL 変数を指している必要があります。
SPI_GETCURSORSHADOW
0x101A
カーソルの周囲に影があるかどうかを判別します。pvParam パラメーターは、影が有効な場合は TRUE、無効な場合は FALSE を受け取る BOOL 変数を指している必要があります。この効果は、システムの色深度が 256 色を超える場合にのみ現れます。
SPI_GETGRADIENTCAPTIONS
0x1008
ウィンドウタイトルバーのグラデーション効果が有効かどうかを判別します。pvParam パラメーターは、有効な場合は TRUE、無効な場合は FALSE を受け取る BOOL 変数を指している必要があります。グラデーション効果の詳細については、GetSysColor 関数を参照してください。
SPI_GETHOTTRACKING
0x100E
メニューバー上のメニュー名など、ユーザーインターフェイス要素のホットトラッキングが有効かどうかを判別します。pvParam パラメーターは、有効な場合は TRUE、無効な場合は FALSE を受け取る BOOL 変数を指している必要があります。

ホットトラッキングとは、カーソルが項目の上に移動したときに、その項目が選択はされないが強調表示されることを意味します。この値を照会して、アプリケーションのユーザーインターフェイスでホットトラッキングを使用するかどうかを決定できます。

SPI_GETLISTBOXSMOOTHSCROLLING
0x1006
リストボックスのスムーズスクロール効果が有効かどうかを判別します。pvParam パラメーターは、有効な場合は TRUE、無効な場合は FALSE を受け取る BOOL 変数を指している必要があります。
SPI_GETMENUANIMATION
0x1002
メニューアニメーション機能が有効かどうかを判別します。メニューアニメーション効果を有効にするには、このマスタースイッチがオンになっている必要があります。pvParam パラメーターは、アニメーションが有効な場合は TRUE、無効な場合は FALSE を受け取る BOOL 変数を指している必要があります。

アニメーションが有効な場合、SPI_GETMENUFADE は、メニューがフェードアニメーションを使用するかスライドアニメーションを使用するかを示します。

SPI_GETMENUUNDERLINES
0x100A
SPI_GETKEYBOARDCUES と同じです。
SPI_GETSELECTIONFADE
0x1014
選択フェード効果が有効かどうかを判別します。pvParam パラメーターは、有効な場合は TRUE、無効な場合は FALSE を受け取る BOOL 変数を指している必要があります。

選択フェード効果により、ユーザーが選択したメニュー項目は、メニューが閉じられた後、フェードアウトしながら画面上に短時間とどまります。

SPI_GETTOOLTIPANIMATION
0x1016
ツールヒントのアニメーションが有効かどうかを判別します。pvParam パラメーターは、有効な場合は TRUE、無効な場合は FALSE を受け取る BOOL 変数を指している必要があります。ツールヒントのアニメーションが有効な場合、SPI_GETTOOLTIPFADE は、ツールヒントがフェードアニメーションを使用するかスライドアニメーションを使用するかを示します。
SPI_GETTOOLTIPFADE
0x1018
SPI_SETTOOLTIPANIMATION が有効な場合、SPI_GETTOOLTIPFADE は、ツールヒントのアニメーションがフェード効果を使用するかスライド効果を使用するかを示します。pvParam パラメーターは、フェードアニメーションの場合は TRUE、スライドアニメーションの場合は FALSE を受け取る BOOL 変数を指している必要があります。スライド効果とフェード効果の詳細については、AnimateWindow を参照してください。
SPI_GETUIEFFECTS
0x103E
UI 効果が有効か無効かを判別します。pvParam パラメーターは、すべての UI 効果が有効な場合は TRUE、無効な場合は FALSE を受け取る BOOL 変数を指している必要があります。
SPI_SETCOMBOBOXANIMATION
0x1005
コンボボックスのスライドオープン効果を有効または無効にします。グラデーション効果を有効にするには pvParam パラメーターを TRUE に、無効にするには FALSE に設定してください。
SPI_SETCURSORSHADOW
0x101B
カーソルの周囲の影を有効または無効にします。pvParam パラメーターは BOOL 変数です。影を有効にするには pvParamTRUE に、無効にするには FALSE に設定してください。この効果は、システムの色深度が 256 色を超える場合にのみ現れます。
SPI_SETGRADIENTCAPTIONS
0x1009
ウィンドウタイトルバーのグラデーション効果を有効または無効にします。有効にするには pvParam パラメーターを TRUE に、無効にするには FALSE に設定してください。グラデーション効果は、システムの色深度が 256 色を超える場合にのみ可能です。グラデーション効果の詳細については、GetSysColor 関数を参照してください。
SPI_SETHOTTRACKING
0x100F
メニューバー上のメニュー名など、ユーザーインターフェイス要素のホットトラッキングを有効または無効にします。有効にするには pvParam パラメーターを TRUE に、無効にするには FALSE に設定してください。

ホットトラッキングとは、カーソルが項目の上に移動したときに、その項目が選択はされないが強調表示されることを意味します。

SPI_SETLISTBOXSMOOTHSCROLLING
0x1007
リストボックスのスムーズスクロール効果を有効または無効にします。スムーズスクロール効果を有効にするには pvParam パラメーターを TRUE に、無効にするには FALSE に設定してください。
SPI_SETMENUANIMATION
0x1003
メニューアニメーションを有効または無効にします。メニューアニメーションを発生させるには、このマスタースイッチがオンになっている必要があります。pvParam パラメーターは BOOL 変数です。アニメーションを有効にするには pvParamTRUE に、無効にするには FALSE に設定してください。

アニメーションが有効な場合、SPI_GETMENUFADE は、メニューがフェードアニメーションを使用するかスライドアニメーションを使用するかを示します。

SPI_SETMENUUNDERLINES
0x100B
SPI_SETKEYBOARDCUES と同じです。
SPI_SETSELECTIONFADE
0x1015
選択フェード効果を有効にするには pvParamTRUE に、無効にするには FALSE に設定してください。

選択フェード効果により、ユーザーが選択したメニュー項目は、メニューが閉じられた後、フェードアウトしながら画面上に短時間とどまります。選択フェード効果は、システムの色深度が 256 色を超える場合にのみ可能です。

SPI_SETTOOLTIPANIMATION
0x1017
ツールヒントのアニメーションを有効にするには pvParamTRUE に、無効にするには FALSE に設定してください。有効な場合、SPI_SETTOOLTIPFADE を使用してフェードアニメーションまたはスライドアニメーションを指定できます。
SPI_SETTOOLTIPFADE
0x1019
SPI_SETTOOLTIPANIMATION フラグが有効な場合、SPI_SETTOOLTIPFADE を使用して、ツールヒントのアニメーションがフェード効果を使用するかスライド効果を使用するかを指定します。フェードアニメーションの場合は pvParamTRUE に、スライドアニメーションの場合は FALSE に設定してください。ツールヒントのフェード効果は、システムの色深度が 256 色を超える場合にのみ可能です。スライド効果とフェード効果の詳細については、AnimateWindow 関数を参照してください。
SPI_SETUIEFFECTS
0x103F
UI 効果を有効または無効にします。すべての UI 効果を有効にするには pvParam パラメーターを TRUE に、すべての UI 効果を無効にするには FALSE に設定してください。
 

次は、ウィンドウパラメーターです。

ウィンドウパラメーター 意味
SPI_GETACTIVEWINDOWTRACKING
0x1000
アクティブウィンドウトラッキング (マウスがある位置のウィンドウをアクティブ化する機能) がオンかオフかを判別します。pvParam パラメーターは、オンの場合は TRUE、オフの場合は FALSE を受け取る BOOL 変数を指している必要があります。
SPI_GETACTIVEWNDTRKZORDER
0x100C
アクティブウィンドウトラッキングによってアクティブ化されたウィンドウが最前面に移動されるかどうかを判別します。pvParam パラメーターは、オンの場合は TRUE、オフの場合は FALSE を受け取る BOOL 変数を指している必要があります。
SPI_GETACTIVEWNDTRKTIMEOUT
0x2002
アクティブウィンドウトラッキングの遅延 (ミリ秒単位) を取得します。pvParam パラメーターは、時間を受け取る DWORD 変数を指している必要があります。
SPI_GETANIMATION
0x0048
ユーザーアクションに関連付けられたアニメーション効果を取得します。pvParam パラメーターは、情報を受け取る ANIMATIONINFO 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(ANIMATIONINFO) に設定してください。
SPI_GETBORDER
0x0005
ウィンドウのサイズ変更境界線の幅を決定する境界線の乗数係数を取得します。pvParam パラメーターは、この値を受け取る整数変数を指している必要があります。
SPI_GETCARETWIDTH
0x2006
エディットコントロールのキャレットの幅 (ピクセル単位) を取得します。pvParam パラメーターは、この値を受け取る DWORD 変数を指している必要があります。
SPI_GETDOCKMOVING
0x0090
ウィンドウがモニターまたはモニター配列の上端、左端、または右端に移動されたときにドッキングされるかどうかを判別します。pvParam パラメーターは、有効な場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。

この動作が有効かどうかを判別するには、SPI_GETWINARRANGING を使用してください。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_GETDRAGFROMMAXIMIZE
0x008C
最大化されたウィンドウのキャプションバーがドラッグされたときに、ウィンドウが復元されるかどうかを判別します。pvParam パラメーターは、有効な場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。

この動作が有効かどうかを判別するには、SPI_GETWINARRANGING を使用してください。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_GETDRAGFULLWINDOWS
0x0026
ウィンドウ全体のドラッグが有効かどうかを判別します。pvParam パラメーターは、有効な場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。
SPI_GETFOREGROUNDFLASHCOUNT
0x2004
フォアグラウンド切り替え要求を拒否するときに、SetForegroundWindow がタスクバーボタンを点滅させる回数を取得します。pvParam パラメーターは、値を受け取る DWORD 変数を指している必要があります。
SPI_GETFOREGROUNDLOCKTIMEOUT
0x2000
ユーザー入力後、システムがアプリケーションを強制的にフォアグラウンドに移動させることを許可しない時間 (ミリ秒単位) を取得します。pvParam パラメーターは、時間を受け取る DWORD 変数を指している必要があります。
SPI_GETMINIMIZEDMETRICS
0x002B
最小化されたウィンドウに関連付けられたメトリックを取得します。pvParam パラメーターは、情報を受け取る MINIMIZEDMETRICS 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(MINIMIZEDMETRICS) に設定してください。
SPI_GETMOUSEDOCKTHRESHOLD
0x007E
マウスを使用してウィンドウをモニターまたはモニター配列の端へドラッグしたときにドッキング動作がトリガーされる、ピクセル単位のしきい値を取得します。既定のしきい値は 1 です。pvParam パラメーターは、値を受け取る DWORD 変数を指している必要があります。

この動作が有効かどうかを判別するには、SPI_GETWINARRANGING を使用してください。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_GETMOUSEDRAGOUTTHRESHOLD
0x0084
マウスを使用してウィンドウをモニターまたはモニター配列の端から中央へドラッグしたときにドッキング解除動作がトリガーされる、ピクセル単位のしきい値を取得します。既定のしきい値は 20 です。

この動作が有効かどうかを判別するには、SPI_GETWINARRANGING を使用してください。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_GETMOUSESIDEMOVETHRESHOLD
0x0088
マウスでドラッグしたときに、垂直方向に最大化されたウィンドウが復元される、モニターまたはモニター配列の上端からのピクセル単位のしきい値を取得します。既定のしきい値は 50 です。

この動作が有効かどうかを判別するには、SPI_GETWINARRANGING を使用してください。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_GETNONCLIENTMETRICS
0x0029
最小化されていないウィンドウの非クライアント領域に関連付けられたメトリックを取得します。pvParam パラメーターは、情報を受け取る NONCLIENTMETRICS 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(NONCLIENTMETRICS) に設定してください。

Windows Server 2003 および Windows XP/2000: NONCLIENTMETRICS の「解説」を参照してください。

SPI_GETPENDOCKTHRESHOLD
0x0080
ペンを使用してウィンドウをモニターまたはモニター配列の端へドラッグしたときにドッキング動作がトリガーされる、ピクセル単位のしきい値を取得します。既定は 30 です。

この動作が有効かどうかを判別するには、SPI_GETWINARRANGING を使用してください。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_GETPENDRAGOUTTHRESHOLD
0x0086
ペンを使用してウィンドウをモニターまたはモニター配列の端から中央へドラッグしたときにドッキング解除動作がトリガーされる、ピクセル単位のしきい値を取得します。既定のしきい値は 30 です。

この動作が有効かどうかを判別するには、SPI_GETWINARRANGING を使用してください。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_GETPENSIDEMOVETHRESHOLD
0x008A
マウスでドラッグしたときに、垂直方向に最大化されたウィンドウが復元される、モニターまたはモニター配列の上端からのピクセル単位のしきい値を取得します。既定のしきい値は 50 です。

この動作が有効かどうかを判別するには、SPI_GETWINARRANGING を使用してください。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_GETSHOWIMEUI
0x006E
IME ステータスウィンドウが (ユーザー単位で) 表示されているかどうかを判別します。pvParam パラメーターは、ステータスウィンドウが表示されている場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。
SPI_GETSNAPSIZING
0x008E
ウィンドウがモニターまたはモニター配列の上端または下端にサイズ変更されたときに、垂直方向に最大化されるかどうかを判別します。pvParam パラメーターは、有効な場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。

この動作が有効かどうかを判別するには、SPI_GETWINARRANGING を使用してください。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_GETWINARRANGING
0x0082
ウィンドウの配置が有効かどうかを判別します。pvParam パラメーターは、有効な場合は TRUE、そうでない場合は FALSE を受け取る BOOL 変数を指している必要があります。

ウィンドウの配置は、ウィンドウがドラッグまたはサイズ変更されたときの既定の動作を簡略化することで、トップレベルウィンドウの移動とサイズ変更に必要なマウス、ペン、またはタッチ操作の回数を減らします。

次のパラメーターは、個々のウィンドウ配置設定を取得します。

SPI_GETDOCKMOVING
SPI_GETMOUSEDOCKTHRESHOLD
SPI_GETMOUSEDRAGOUTTHRESHOLD
SPI_GETMOUSESIDEMOVETHRESHOLD
SPI_GETPENDOCKTHRESHOLD
SPI_GETPENDRAGOUTTHRESHOLD
SPI_GETPENSIDEMOVETHRESHOLD
SPI_GETSNAPSIZING
Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。
SPI_SETACTIVEWINDOWTRACKING
0x1001
アクティブウィンドウトラッキング (マウスがある位置のウィンドウをアクティブ化する機能) をオンまたはオフにします。オンにするには pvParamTRUE に、オフにするには FALSE に設定してください。
SPI_SETACTIVEWNDTRKZORDER
0x100D
アクティブウィンドウトラッキングによってアクティブ化されたウィンドウを最前面に移動するかどうかを判別します。オンにするには pvParamTRUE に、オフにするには FALSE に設定してください。
SPI_SETACTIVEWNDTRKTIMEOUT
0x2003
アクティブウィンドウトラッキングの遅延を設定します。マウスポインターの下のウィンドウをアクティブ化するまでの遅延時間 (ミリ秒単位) を pvParam に設定してください。
SPI_SETANIMATION
0x0049
ユーザーアクションに関連付けられたアニメーション効果を設定します。pvParam パラメーターは、新しいパラメーターを格納した ANIMATIONINFO 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(ANIMATIONINFO) に設定してください。
SPI_SETBORDER
0x0006
ウィンドウのサイズ変更境界線の幅を決定する境界線の乗数係数を設定します。uiParam パラメーターは新しい値を指定します。
SPI_SETCARETWIDTH
0x2007
エディットコントロールのキャレットの幅を設定します。希望する幅 (ピクセル単位) を pvParam に設定してください。既定値および最小値は 1 です。
SPI_SETDOCKMOVING
0x0091
ウィンドウがモニターまたはモニター配列の上端、左端、または右端のドッキングターゲットに移動されたときにドッキングされるかどうかを設定します。オンにするには pvParamTRUE に、オフにするには FALSE に設定してください。

この動作を有効にするには、SPI_GETWINARRANGINGTRUE である必要があります。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETDRAGFROMMAXIMIZE
0x008D
最大化されたウィンドウのキャプションバーがドラッグされたときに、ウィンドウが復元されるかどうかを設定します。オンにするには pvParamTRUE に、オフにするには FALSE に設定してください。

この動作を有効にするには、SPI_GETWINARRANGINGTRUE である必要があります。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETDRAGFULLWINDOWS
0x0025
ウィンドウ全体のドラッグをオンまたはオフにします。uiParam パラメーターは、オンの場合は TRUE、オフの場合は FALSE を指定します。
SPI_SETDRAGHEIGHT
0x004D
ドラッグ操作の開始を検出するために使用される四角形の高さ (ピクセル単位) を設定します。uiParam に新しい値を設定してください。ドラッグの高さを取得するには、GetSystemMetricsSM_CYDRAG フラグで呼び出してください。
SPI_SETDRAGWIDTH
0x004C
ドラッグ操作の開始を検出するために使用される四角形の幅 (ピクセル単位) を設定します。uiParam に新しい値を設定してください。ドラッグの幅を取得するには、GetSystemMetricsSM_CXDRAG フラグで呼び出してください。
SPI_SETFOREGROUNDFLASHCOUNT
0x2005
フォアグラウンド切り替え要求を拒否するときに、SetForegroundWindow がタスクバーボタンを点滅させる回数を設定します。点滅させる回数を pvParam に設定してください。
SPI_SETFOREGROUNDLOCKTIMEOUT
0x2001
ユーザー入力後、システムがアプリケーションを強制的にフォアグラウンドに移動させることを許可しない時間 (ミリ秒単位) を設定します。新しいタイムアウト値を pvParam に設定してください。

呼び出し元のスレッドがフォアグラウンドウィンドウを変更できる必要があります。そうでない場合、呼び出しは失敗します。

SPI_SETMINIMIZEDMETRICS
0x002C
最小化されたウィンドウに関連付けられたメトリックを設定します。pvParam パラメーターは、新しいパラメーターを格納した MINIMIZEDMETRICS 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(MINIMIZEDMETRICS) に設定してください。
SPI_SETMOUSEDOCKTHRESHOLD
0x007F
マウスを使用してウィンドウをモニターまたはモニター配列の端へドラッグしたときにドッキング動作がトリガーされる、ピクセル単位のしきい値を設定します。既定のしきい値は 1 です。pvParam パラメーターは、新しい値を格納した DWORD 変数を指している必要があります。

この動作を有効にするには、SPI_GETWINARRANGINGTRUE である必要があります。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETMOUSEDRAGOUTTHRESHOLD
0x0085
マウスを使用してウィンドウをモニターまたはモニター配列の端から中央へドラッグしたときにドッキング解除動作がトリガーされる、ピクセル単位のしきい値を設定します。既定のしきい値は 20 です。pvParam パラメーターは、新しい値を格納した DWORD 変数を指している必要があります。

この動作を有効にするには、SPI_GETWINARRANGINGTRUE である必要があります。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETMOUSESIDEMOVETHRESHOLD
0x0089
マウスでドラッグしたときに、垂直方向に最大化されたウィンドウが復元される、モニターの上端からのピクセル単位のしきい値を設定します。既定のしきい値は 50 です。pvParam パラメーターは、新しい値を格納した DWORD 変数を指している必要があります。

この動作を有効にするには、SPI_GETWINARRANGINGTRUE である必要があります。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETNONCLIENTMETRICS
0x002A
最小化されていないウィンドウの非クライアント領域に関連付けられたメトリックを設定します。pvParam パラメーターは、新しいパラメーターを格納した NONCLIENTMETRICS 構造体を指している必要があります。この構造体の cbSize メンバーと uiParam パラメーターを sizeof(NONCLIENTMETRICS) に設定してください。また、LOGFONT 構造体の lfHeight メンバーは負の値である必要があります。
SPI_SETPENDOCKTHRESHOLD
0x0081
ペンを使用してウィンドウをモニターまたはモニター配列の端へドラッグしたときにドッキング動作がトリガーされる、ピクセル単位のしきい値を設定します。既定のしきい値は 30 です。pvParam パラメーターは、新しい値を格納した DWORD 変数を指している必要があります。

この動作を有効にするには、SPI_GETWINARRANGINGTRUE である必要があります。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETPENDRAGOUTTHRESHOLD
0x0087
ペンを使用してウィンドウをモニターまたはモニター配列の端から中央へドラッグしたときにドッキング解除動作がトリガーされる、ピクセル単位のしきい値を設定します。既定のしきい値は 30 です。pvParam パラメーターは、新しい値を格納した DWORD 変数を指している必要があります。

この動作を有効にするには、SPI_GETWINARRANGINGTRUE である必要があります。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETPENSIDEMOVETHRESHOLD
0x008B
ペンでドラッグしたときに、垂直方向に最大化されたウィンドウが復元される、モニターの上端からのピクセル単位のしきい値を設定します。既定のしきい値は 50 です。pvParam パラメーターは、新しい値を格納した DWORD 変数を指している必要があります。

この動作を有効にするには、SPI_GETWINARRANGINGTRUE である必要があります。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETSHOWIMEUI
0x006F
IME ステータスウィンドウをユーザー単位で表示するかどうかを設定します。uiParam パラメーターは、オンの場合は TRUE、オフの場合は FALSE を指定します。
SPI_SETSNAPSIZING
0x008F
ウィンドウがモニターの上端または下端にサイズ変更されたときに、垂直方向に最大化されるかどうかを設定します。オンにするには pvParamTRUE に、オフにするには FALSE に設定してください。

この動作を有効にするには、SPI_GETWINARRANGINGTRUE である必要があります。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。

SPI_SETWINARRANGING
0x0083
ウィンドウの配置を有効にするかどうかを設定します。オンにするには pvParamTRUE に、オフにするには FALSE に設定してください。

ウィンドウの配置は、ウィンドウがドラッグまたはサイズ変更されたときの既定の動作を簡略化することで、トップレベルウィンドウの移動とサイズ変更に必要なマウス、ペン、またはタッチ操作の回数を減らします。

次のパラメーターは、個々のウィンドウ配置設定を行います。

SPI_SETDOCKMOVING
SPI_SETMOUSEDOCKTHRESHOLD
SPI_SETMOUSEDRAGOUTTHRESHOLD
SPI_SETMOUSESIDEMOVETHRESHOLD
SPI_SETPENDOCKTHRESHOLD
SPI_SETPENDRAGOUTTHRESHOLD
SPI_SETPENSIDEMOVETHRESHOLD
SPI_SETSNAPSIZING
Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP/2000: このパラメーターはサポートされていません。
uiParamDWORDin使用方法と形式は、照会または設定の対象となるシステムパラメーターによって異なるパラメーターです。システム全体のパラメーターの詳細については、uiAction パラメーターを参照してください。特に指定がない限り、このパラメーターには 0 を指定する必要があります。
pvParamvoid*inoutoptional使用方法と形式は、照会または設定の対象となるシステムパラメーターによって異なるパラメーターです。システム全体のパラメーターの詳細については、uiAction パラメーターを参照してください。特に指定がない限り、このパラメーターには NULL を指定する必要があります。PVOID データ型の詳細については、Windows Data Types を参照してください。
fWinIniSYSTEM_PARAMETERS_INFO_UPDATE_FLAGSin

システムパラメーターを設定する場合に、ユーザープロファイルを更新するかどうか、また更新する場合に、変更を通知するために WM_SETTINGCHANGE メッセージをすべてのトップレベルウィンドウにブロードキャストするかどうかを指定します。

ユーザープロファイルを更新せず、WM_SETTINGCHANGE メッセージもブロードキャストしない場合は、このパラメーターを 0 にできます。あるいは、次の値の 1 つ以上を指定できます。

意味
SPIF_UPDATEINIFILE
新しいシステム全体のパラメーター設定をユーザープロファイルに書き込みます。
SPIF_SENDCHANGE
ユーザープロファイルを更新した後、WM_SETTINGCHANGE メッセージをブロードキャストします。
SPIF_SENDWININICHANGE
SPIF_SENDCHANGE と同じです。

戻り値の型: BOOL

公式ドキュメント

システム全体のパラメーターのうち、いずれか 1 つの値を取得または設定します。(ANSI)

戻り値

Type: BOOL

関数が成功した場合、戻り値は 0 以外の値になります。

関数が失敗した場合、戻り値は 0 になります。拡張エラー情報を取得するには、GetLastError を呼び出してください。

解説(Remarks)

この関数は、ユーザーが環境をカスタマイズできるアプリケーションでの使用を目的としています。

キーボードレイアウト名は、レイアウトに対応する言語識別子の 16 進値から導出する必要があります。たとえば、米国英語の言語識別子は 0x0409 であるため、主要な米国英語レイアウトの名前は "00000409" になります。Dvorak レイアウトなどの米国英語レイアウトのバリアントは、"00010409"、"00020409" のように名付けられます。言語識別子を構成する主要言語識別子およびサブ言語識別子の一覧については、MAKELANGID マクロを参照してください。

ハイコントラストカラースキームとハイコントラストモードには違いがあります。ハイコントラストカラースキームは、システムの色を明確なコントラストを持つ色に変更します。このカラースキームへの切り替えは、コントロールパネルの [画面] オプションを使用して行います。SPI_GETHIGHCONTRAST および SPI_SETHIGHCONTRAST を使用するハイコントラストモードは、視覚障害のあるユーザー向けに外観を変更するようアプリケーションに通知します。これには、ユーザーへの可聴警告やカスタマイズされたカラースキーム (コントロールパネルのユーザー補助のオプションを使用) などが含まれます。詳細については、HIGHCONTRAST を参照してください。一般的なユーザー補助機能の詳細については、Accessibility を参照してください。

Mouse ClickLock 機能を有効にするためにプライマリボタンを押し続けている間、ユーザーはマウスを動かすことができます。プライマリボタンがロックされた後、プライマリボタンを離しても WM_LBUTTONUP メッセージは発生しません。そのため、アプリケーションにはプライマリボタンがまだ押されているように見えます。その後のいずれかのボタンメッセージによってプライマリボタンが解放され、WM_LBUTTONUP メッセージがアプリケーションに送信されます。このように、ボタンはプログラムによって、またはユーザーが任意のボタンをクリックすることでロック解除できます。

この API は DPI を認識しないため、呼び出し元のスレッドがモニターごとの DPI を認識する場合は使用しないでください。この API の DPI 対応バージョンについては、SystemParametersInfoForDPI を参照してください。DPI 認識の詳細については、Windows の高 DPI に関するドキュメントを参照してください。

次の例では、SystemParametersInfo を使用してマウスの速度を 2 倍にします。


#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "user32.lib")    

void main()  
{     
    BOOL fResult;
    int aMouseInfo[3];    // Array for mouse information
    
    // Get the current mouse speed.         
    fResult = SystemParametersInfo(SPI_GETMOUSE,   // Get mouse information
                                   0,              // Not used
                                   &aMouseInfo,    // Holds mouse information
                                   0);             // Not used           
                                   
    // Double it.         
    if( fResult )     
    {
        aMouseInfo[2] = 2 * aMouseInfo[2];
        
        // Change the mouse speed to the new value.
        SystemParametersInfo(SPI_SETMOUSE,      // Set mouse information
                             0,                 // Not used
                             aMouseInfo,        // Mouse information
                             SPIF_SENDCHANGE);  // Update Win.ini
    }  
}
メモ

winuser.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI バージョンまたは Unicode バージョンを自動的に選択するエイリアスとして SystemParametersInfo を定義します。エンコーディング中立のエイリアスの使用を、エンコーディング中立でないコードと混在させると、コンパイルエラーや実行時エラーを引き起こす不一致が生じる可能性があります。詳細については、Conventions for Function Prototypes を参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での呼び出し定義

// USER32.dll  (ANSI / -A)
#include <windows.h>

BOOL SystemParametersInfoA(
    SYSTEM_PARAMETERS_INFO_ACTION uiAction,
    DWORD uiParam,
    void* pvParam,   // optional
    SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS fWinIni
);
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("USER32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
static extern bool SystemParametersInfoA(
    uint uiAction,   // SYSTEM_PARAMETERS_INFO_ACTION
    uint uiParam,   // DWORD
    IntPtr pvParam,   // void* optional, in/out
    uint fWinIni   // SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
);
<DllImport("USER32.dll", CharSet:=CharSet.Ansi, SetLastError:=True, ExactSpelling:=True)>
Public Shared Function SystemParametersInfoA(
    uiAction As UInteger,   ' SYSTEM_PARAMETERS_INFO_ACTION
    uiParam As UInteger,   ' DWORD
    pvParam As IntPtr,   ' void* optional, in/out
    fWinIni As UInteger   ' SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function
' uiAction : SYSTEM_PARAMETERS_INFO_ACTION
' uiParam : DWORD
' pvParam : void* optional, in/out
' fWinIni : SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
Declare PtrSafe Function SystemParametersInfoA Lib "user32" ( _
    ByVal uiAction As Long, _
    ByVal uiParam As Long, _
    ByVal pvParam As LongPtr, _
    ByVal fWinIni As Long) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。
import ctypes
from ctypes import wintypes

SystemParametersInfoA = ctypes.windll.user32.SystemParametersInfoA
SystemParametersInfoA.restype = wintypes.BOOL
SystemParametersInfoA.argtypes = [
    wintypes.DWORD,  # uiAction : SYSTEM_PARAMETERS_INFO_ACTION
    wintypes.DWORD,  # uiParam : DWORD
    ctypes.POINTER(None),  # pvParam : void* optional, in/out
    wintypes.DWORD,  # fWinIni : SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
]
# GetLastError: use ctypes.GetLastError() (or ctypes.WinDLL(use_last_error=True))
require 'fiddle'
require 'fiddle/import'

lib = Fiddle.dlopen('USER32.dll')
SystemParametersInfoA = Fiddle::Function.new(
  lib['SystemParametersInfoA'],
  [
    -Fiddle::TYPE_INT,  # uiAction : SYSTEM_PARAMETERS_INFO_ACTION
    -Fiddle::TYPE_INT,  # uiParam : DWORD
    Fiddle::TYPE_VOIDP,  # pvParam : void* optional, in/out
    -Fiddle::TYPE_INT,  # fWinIni : SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
  ],
  Fiddle::TYPE_INT)
#[link(name = "user32")]
extern "system" {
    fn SystemParametersInfoA(
        uiAction: u32,  // SYSTEM_PARAMETERS_INFO_ACTION
        uiParam: u32,  // DWORD
        pvParam: *mut (),  // void* optional, in/out
        fWinIni: u32  // SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
    ) -> i32;
}
// crates: windows-sys provides ready-made bindings for this API.
$sig = @"
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("USER32.dll", CharSet = CharSet.Ansi, SetLastError = true)]
public static extern bool SystemParametersInfoA(uint uiAction, uint uiParam, IntPtr pvParam, uint fWinIni);
"@
$api = Add-Type -MemberDefinition $sig -Name 'USER32_SystemParametersInfoA' -Namespace Win32 -PassThru
# $api::SystemParametersInfoA(uiAction, uiParam, pvParam, fWinIni)
#uselib "USER32.dll"
#func global SystemParametersInfoA "SystemParametersInfoA" sptr, sptr, sptr, sptr
; SystemParametersInfoA uiAction, uiParam, pvParam, fWinIni   ; 戻り値は stat
; uiAction : SYSTEM_PARAMETERS_INFO_ACTION -> "sptr"
; uiParam : DWORD -> "sptr"
; pvParam : void* optional, in/out -> "sptr"
; fWinIni : SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。
#uselib "USER32.dll"
#cfunc global SystemParametersInfoA "SystemParametersInfoA" int, int, sptr, int
; res = SystemParametersInfoA(uiAction, uiParam, pvParam, fWinIni)
; uiAction : SYSTEM_PARAMETERS_INFO_ACTION -> "int"
; uiParam : DWORD -> "int"
; pvParam : void* optional, in/out -> "sptr"
; fWinIni : SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS -> "int"
; BOOL SystemParametersInfoA(SYSTEM_PARAMETERS_INFO_ACTION uiAction, DWORD uiParam, void* pvParam, SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS fWinIni)
#uselib "USER32.dll"
#cfunc global SystemParametersInfoA "SystemParametersInfoA" int, int, intptr, int
; res = SystemParametersInfoA(uiAction, uiParam, pvParam, fWinIni)
; uiAction : SYSTEM_PARAMETERS_INFO_ACTION -> "int"
; uiParam : DWORD -> "int"
; pvParam : void* optional, in/out -> "intptr"
; fWinIni : SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS -> "int"
import (
	"golang.org/x/sys/windows"
	"unsafe"
)

var (
	user32 = windows.NewLazySystemDLL("USER32.dll")
	procSystemParametersInfoA = user32.NewProc("SystemParametersInfoA")
)

// uiAction (SYSTEM_PARAMETERS_INFO_ACTION), uiParam (DWORD), pvParam (void* optional, in/out), fWinIni (SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS)
r1, _, err := procSystemParametersInfoA.Call(
	uintptr(uiAction),
	uintptr(uiParam),
	uintptr(pvParam),
	uintptr(fWinIni),
)
_ = err  // syscall.Errno (valid when the call sets last-error)
_ = r1   // BOOL
function SystemParametersInfoA(
  uiAction: DWORD;   // SYSTEM_PARAMETERS_INFO_ACTION
  uiParam: DWORD;   // DWORD
  pvParam: Pointer;   // void* optional, in/out
  fWinIni: DWORD   // SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
): BOOL; stdcall;
  external 'USER32.dll' name 'SystemParametersInfoA';
result := DllCall("USER32\SystemParametersInfoA"
    , "UInt", uiAction   ; SYSTEM_PARAMETERS_INFO_ACTION
    , "UInt", uiParam   ; DWORD
    , "Ptr", pvParam   ; void* optional, in/out
    , "UInt", fWinIni   ; SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
    , "Int")   ; return: BOOL
●SystemParametersInfoA(uiAction, uiParam, pvParam, fWinIni) = DLL("USER32.dll", "bool SystemParametersInfoA(dword, dword, void*, dword)")
# 呼び出し: SystemParametersInfoA(uiAction, uiParam, pvParam, fWinIni)
# uiAction : SYSTEM_PARAMETERS_INFO_ACTION -> "dword"
# uiParam : DWORD -> "dword"
# pvParam : void* optional, in/out -> "void*"
# fWinIni : SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS -> "dword"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。
const std = @import("std");

extern "user32" fn SystemParametersInfoA(
    uiAction: u32, // SYSTEM_PARAMETERS_INFO_ACTION
    uiParam: u32, // DWORD
    pvParam: ?*anyopaque, // void* optional, in/out
    fWinIni: u32 // SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
) callconv(std.os.windows.WINAPI) i32;
proc SystemParametersInfoA(
    uiAction: uint32,  # SYSTEM_PARAMETERS_INFO_ACTION
    uiParam: uint32,  # DWORD
    pvParam: pointer,  # void* optional, in/out
    fWinIni: uint32  # SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
): int32 {.importc: "SystemParametersInfoA", stdcall, dynlib: "USER32.dll".}
pragma(lib, "user32");
extern(Windows)
int SystemParametersInfoA(
    uint uiAction,   // SYSTEM_PARAMETERS_INFO_ACTION
    uint uiParam,   // DWORD
    void* pvParam,   // void* optional, in/out
    uint fWinIni   // SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
);
ccall((:SystemParametersInfoA, "USER32.dll"), stdcall, Int32,
      (UInt32, UInt32, Ptr{Cvoid}, UInt32),
      uiAction, uiParam, pvParam, fWinIni)
# uiAction : SYSTEM_PARAMETERS_INFO_ACTION -> UInt32
# uiParam : DWORD -> UInt32
# pvParam : void* optional, in/out -> Ptr{Cvoid}
# fWinIni : SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS -> UInt32
# stdcall は 32bit のみ意味を持つ(x64 では無視)。
local ffi = require("ffi")
ffi.cdef[[
int32_t SystemParametersInfoA(
    uint32_t uiAction,
    uint32_t uiParam,
    void* pvParam,
    uint32_t fWinIni);
]]
local user32 = ffi.load("user32")
-- user32.SystemParametersInfoA(uiAction, uiParam, pvParam, fWinIni)
-- uiAction : SYSTEM_PARAMETERS_INFO_ACTION
-- uiParam : DWORD
-- pvParam : void* optional, in/out
-- fWinIni : SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
-- 構造体/GUIDへのポインタは cdef が通るよう void* で表記(実型は各引数コメント参照)。値渡し構造体・enum は対応する typedef を cdef に追加すること。
const koffi = require('koffi');
const lib = koffi.load('USER32.dll');
const SystemParametersInfoA = lib.func('__stdcall', 'SystemParametersInfoA', 'int32_t', ['uint32_t', 'uint32_t', 'void *', 'uint32_t']);
// SystemParametersInfoA(uiAction, uiParam, pvParam, fWinIni)
// uiAction : SYSTEM_PARAMETERS_INFO_ACTION -> 'uint32_t'
// uiParam : DWORD -> 'uint32_t'
// pvParam : void* optional, in/out -> 'void *'
// fWinIni : SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS -> 'uint32_t'
// 出力ポインタは koffi.out(...) で包む。構造体は koffi.struct で定義。
const lib = Deno.dlopen("USER32.dll", {
  SystemParametersInfoA: { parameters: ["u32", "u32", "pointer", "u32"], result: "i32" },
});
// lib.symbols.SystemParametersInfoA(uiAction, uiParam, pvParam, fWinIni)
// uiAction : SYSTEM_PARAMETERS_INFO_ACTION -> "u32"
// uiParam : DWORD -> "u32"
// pvParam : void* optional, in/out -> "pointer"
// fWinIni : SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS -> "u32"
// 文字列は "buffer"。ANSI(-A) は new TextEncoder() で UTF-8/ANSI バイト列(末尾に \x00)を渡す。
// 値渡し構造体は { struct: [ ...field types... ] } を使用。
<?php
$ffi = FFI::cdef(<<<C
int32_t SystemParametersInfoA(
    uint32_t uiAction,
    uint32_t uiParam,
    void* pvParam,
    uint32_t fWinIni);
C, "USER32.dll");
// $ffi->SystemParametersInfoA(uiAction, uiParam, pvParam, fWinIni);
// uiAction : SYSTEM_PARAMETERS_INFO_ACTION
// uiParam : DWORD
// pvParam : void* optional, in/out
// fWinIni : SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
// 構造体/GUIDへのポインタは cdef が通るよう void* で表記(実型は各引数コメント参照)。値渡し構造体・enum は対応する typedef を cdef に追加すること。
// WINAPI(stdcall): x64 では呼出規約が統一されるため問題なし。x86 では __stdcall 対応のラッパが必要な場合あり。
import com.sun.jna.*;
import com.sun.jna.ptr.*;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.win32.W32APIOptions;

public interface User32 extends StdCallLibrary {
    User32 INSTANCE = Native.load("user32", User32.class, W32APIOptions.ASCII_OPTIONS);
    boolean SystemParametersInfoA(
        int uiAction,   // SYSTEM_PARAMETERS_INFO_ACTION
        int uiParam,   // DWORD
        Pointer pvParam,   // void* optional, in/out
        int fWinIni   // SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
    );
}
@[Link("user32")]
lib LibUSER32
  fun SystemParametersInfoA = SystemParametersInfoA(
    uiAction : UInt32,   # SYSTEM_PARAMETERS_INFO_ACTION
    uiParam : UInt32,   # DWORD
    pvParam : Void*,   # void* optional, in/out
    fWinIni : UInt32   # SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
  ) : Int32
end
# 構造体/GUID/enum は lib 内に対応する型定義が必要。
# 呼出規約: x64 は規約統一のため OK。x86(32bit)は WINAPI=stdcall だが Crystal の fun に stdcall 付与構文がなく非対応。
import 'dart:ffi';
import 'package:ffi/ffi.dart';

typedef SystemParametersInfoANative = Int32 Function(Uint32, Uint32, Pointer<Void>, Uint32);
typedef SystemParametersInfoADart = int Function(int, int, Pointer<Void>, int);
final SystemParametersInfoA = DynamicLibrary.open('USER32.dll')
    .lookupFunction<SystemParametersInfoANative, SystemParametersInfoADart>('SystemParametersInfoA');
// uiAction : SYSTEM_PARAMETERS_INFO_ACTION -> Uint32
// uiParam : DWORD -> Uint32
// pvParam : void* optional, in/out -> Pointer<Void>
// fWinIni : SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS -> Uint32
// 文字列は package:ffi の "...".toNativeUtf16()/toNativeUtf8() で変換。
{$mode objfpc}{$H+}
function SystemParametersInfoA(
  uiAction: DWORD;   // SYSTEM_PARAMETERS_INFO_ACTION
  uiParam: DWORD;   // DWORD
  pvParam: Pointer;   // void* optional, in/out
  fWinIni: DWORD   // SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
): BOOL; stdcall;
  external 'USER32.dll' name 'SystemParametersInfoA';
import Foreign
import Foreign.C.Types
import Foreign.C.String

foreign import stdcall safe "SystemParametersInfoA"
  c_SystemParametersInfoA :: Word32 -> Word32 -> Ptr () -> Word32 -> IO CInt
-- uiAction : SYSTEM_PARAMETERS_INFO_ACTION -> Word32
-- uiParam : DWORD -> Word32
-- pvParam : void* optional, in/out -> Ptr ()
-- fWinIni : SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS -> Word32
-- 要 GHC(Windows)。stdcall は x64 では ccall として扱われる。ブロックする API は safe 呼び出し推奨。
open Ctypes
open Foreign

let systemparametersinfoa =
  foreign "SystemParametersInfoA"
    (uint32_t @-> uint32_t @-> (ptr void) @-> uint32_t @-> returning int32_t)
(* uiAction : SYSTEM_PARAMETERS_INFO_ACTION -> uint32_t *)
(* uiParam : DWORD -> uint32_t *)
(* pvParam : void* optional, in/out -> (ptr void) *)
(* fWinIni : SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS -> uint32_t *)
(* foreign は cdecl 前提。x64 Windows では WINAPI と一致。構造体は ctypes structure を定義のこと。 *)
(cffi:define-foreign-library user32 (t "USER32.dll"))
(cffi:use-foreign-library user32)

(cffi:defcfun ("SystemParametersInfoA" system-parameters-info-a :convention :stdcall) :int32
  (ui-action :uint32)   ; SYSTEM_PARAMETERS_INFO_ACTION
  (ui-param :uint32)   ; DWORD
  (pv-param :pointer)   ; void* optional, in/out
  (f-win-ini :uint32))   ; SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
; isize/usize(INT_PTR/SIZE_T)は x64 前提で :int64/:uint64。x86 では :int32/:uint32。
use Win32::API;
my $SystemParametersInfoA = Win32::API::More->new('USER32',
    'BOOL SystemParametersInfoA(DWORD uiAction, DWORD uiParam, LPVOID pvParam, DWORD fWinIni)');
# my $ret = $SystemParametersInfoA->Call($uiAction, $uiParam, $pvParam, $fWinIni);
# uiAction : SYSTEM_PARAMETERS_INFO_ACTION -> DWORD
# uiParam : DWORD -> DWORD
# pvParam : void* optional, in/out -> LPVOID
# fWinIni : SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS -> DWORD
# 値渡し構造体は pack() した文字列、または Win32::API::Struct を使用。

関連項目

文字セット違い
公式の関連項目
使用する型