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

SystemParametersInfoW

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

シグネチャ

// USER32.dll  (Unicode / -W)
#include <windows.h>

BOOL SystemParametersInfoW(
    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
Show Sounds ユーザー補助フラグがオンかオフかを判断します。オンの場合、ユーザーは、通常であれば情報を音声形式のみで提示する場面でも、アプリケーションが情報を視覚的に提示することを必要としています。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 SP2 までサポートされていません。

SPI_GETFONTSMOOTHINGTYPE
0x200A
フォント スムージングの種類を取得します。pvParam パラメーターは、情報を受け取る UINT を指している必要があります。指定可能な値は、FE_FONTSMOOTHINGSTANDARD および FE_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
Windows に WIN.INI ファイルから Pattern= 設定を読み取らせることによって、現在のデスクトップ パターンを設定します。
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 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 変数を指している必要があります。 値が 0 または MOUSEWHEEL_ROUTING_FOCUS の場合、マウス ホイール入力はフォーカスのあるアプリに送られます。値が 1 または MOUSEWHEEL_ROUTING_HYBRID(既定)の場合、マウス ホイール入力は、フォーカスのあるアプリ(デスクトップ アプリ)またはマウス カーソルの下にあるアプリ(Windows ストア アプリ)に送られます。 uiParam パラメーターは使用されません。

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 以降: アクティブな入力設定が Local(スレッドごと、TRUE)または Global(セッション、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 SP1 および Windows XP SP2 まで、USER_TIMER_MAXIMUM および USER_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 変数を指している必要があります。 値が 0 または MOUSEWHEEL_ROUTING_FOCUS の場合、マウス ホイール入力はフォーカスのあるアプリに送られます。値が 1 または MOUSEWHEEL_ROUTING_HYBRID(既定)の場合、マウス ホイール入力は、フォーカスのあるアプリ(デスクトップ アプリ)またはマウス カーソルの下にあるアプリ(Windows ストア アプリ)に送られます。 uiParam パラメーターを 0 に設定します。

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 以降: アクティブな入力設定が Local(スレッドごと、TRUE)または Global(セッション、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

公式ドキュメント

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

戻り値

型: BOOL

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

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

解説(Remarks)

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

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

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

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

この API は DPI 非対応であり、呼び出し元のスレッドがモニターごとの DPI 対応である場合は使用しないでください。この API の DPI 対応版については、SystemParametersInfoForDPI を参照してください。DPI 対応の詳細については、Windows の High 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 を定義しています。エンコード ニュートラルなエイリアスの使用を、エンコード ニュートラルでないコードと混在させると、コンパイル エラーまたは実行時エラーを引き起こす不一致が生じる可能性があります。詳細については、関数プロトタイプの規則を参照してください。

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

各言語での呼び出し定義

// USER32.dll  (Unicode / -W)
#include <windows.h>

BOOL SystemParametersInfoW(
    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.Unicode, SetLastError = true, ExactSpelling = true)]
static extern bool SystemParametersInfoW(
    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.Unicode, SetLastError:=True, ExactSpelling:=True)>
Public Shared Function SystemParametersInfoW(
    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 SystemParametersInfoW Lib "user32" ( _
    ByVal uiAction As Long, _
    ByVal uiParam As Long, _
    ByVal pvParam As LongPtr, _
    ByVal fWinIni As Long) As Long
' Unicode(W): 文字列は ByVal As LongPtr とし StrPtr(unicodeStr) を渡す
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。
import ctypes
from ctypes import wintypes

SystemParametersInfoW = ctypes.windll.user32.SystemParametersInfoW
SystemParametersInfoW.restype = wintypes.BOOL
SystemParametersInfoW.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')
SystemParametersInfoW = Fiddle::Function.new(
  lib['SystemParametersInfoW'],
  [
    -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)
# Wide strings: pass str.encode("UTF-16LE") + "\x00\x00"
#[link(name = "user32")]
extern "system" {
    fn SystemParametersInfoW(
        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.Unicode, SetLastError = true)]
public static extern bool SystemParametersInfoW(uint uiAction, uint uiParam, IntPtr pvParam, uint fWinIni);
"@
$api = Add-Type -MemberDefinition $sig -Name 'USER32_SystemParametersInfoW' -Namespace Win32 -PassThru
# $api::SystemParametersInfoW(uiAction, uiParam, pvParam, fWinIni)
#uselib "USER32.dll"
#func global SystemParametersInfoW "SystemParametersInfoW" wptr, wptr, wptr, wptr
; SystemParametersInfoW uiAction, uiParam, pvParam, fWinIni   ; 戻り値は stat
; uiAction : SYSTEM_PARAMETERS_INFO_ACTION -> "wptr"
; uiParam : DWORD -> "wptr"
; pvParam : void* optional, in/out -> "wptr"
; fWinIni : SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS -> "wptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。
#uselib "USER32.dll"
#cfunc global SystemParametersInfoW "SystemParametersInfoW" int, int, sptr, int
; res = SystemParametersInfoW(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 SystemParametersInfoW(SYSTEM_PARAMETERS_INFO_ACTION uiAction, DWORD uiParam, void* pvParam, SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS fWinIni)
#uselib "USER32.dll"
#cfunc global SystemParametersInfoW "SystemParametersInfoW" int, int, intptr, int
; res = SystemParametersInfoW(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")
	procSystemParametersInfoW = user32.NewProc("SystemParametersInfoW")
)

// uiAction (SYSTEM_PARAMETERS_INFO_ACTION), uiParam (DWORD), pvParam (void* optional, in/out), fWinIni (SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS)
r1, _, err := procSystemParametersInfoW.Call(
	uintptr(uiAction),
	uintptr(uiParam),
	uintptr(pvParam),
	uintptr(fWinIni),
)
_ = err  // syscall.Errno (valid when the call sets last-error)
_ = r1   // BOOL
function SystemParametersInfoW(
  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 'SystemParametersInfoW';
result := DllCall("USER32\SystemParametersInfoW"
    , "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
●SystemParametersInfoW(uiAction, uiParam, pvParam, fWinIni) = DLL("USER32.dll", "bool SystemParametersInfoW(dword, dword, void*, dword)")
# 呼び出し: SystemParametersInfoW(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)。
# ※-W(Unicode)関数。なでしこ1はANSIのため -A 版の利用を推奨。
const std = @import("std");

extern "user32" fn SystemParametersInfoW(
    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;
// Unicode(-W): UTF-16LE のヌル終端バッファ([*c]const u16)を渡す。
proc SystemParametersInfoW(
    uiAction: uint32,  # SYSTEM_PARAMETERS_INFO_ACTION
    uiParam: uint32,  # DWORD
    pvParam: pointer,  # void* optional, in/out
    fWinIni: uint32  # SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
): int32 {.importc: "SystemParametersInfoW", stdcall, dynlib: "USER32.dll".}
# Unicode(-W): WideCString は newWideCString("...") で生成。
pragma(lib, "user32");
extern(Windows)
int SystemParametersInfoW(
    uint uiAction,   // SYSTEM_PARAMETERS_INFO_ACTION
    uint uiParam,   // DWORD
    void* pvParam,   // void* optional, in/out
    uint fWinIni   // SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
);
ccall((:SystemParametersInfoW, "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 では無視)。
# Unicode(-W): Cwstring には transcode(UInt16, "...") 等で UTF-16 を渡す。
local ffi = require("ffi")
ffi.cdef[[
int32_t SystemParametersInfoW(
    uint32_t uiAction,
    uint32_t uiParam,
    void* pvParam,
    uint32_t fWinIni);
]]
local user32 = ffi.load("user32")
-- user32.SystemParametersInfoW(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 に追加すること。
-- Unicode(-W): uint16_t* には UTF-16LE のバッファ(ffi.new("uint16_t[?]", ...))を渡す。
const koffi = require('koffi');
const lib = koffi.load('USER32.dll');
const SystemParametersInfoW = lib.func('__stdcall', 'SystemParametersInfoW', 'int32_t', ['uint32_t', 'uint32_t', 'void *', 'uint32_t']);
// SystemParametersInfoW(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", {
  SystemParametersInfoW: { parameters: ["u32", "u32", "pointer", "u32"], result: "i32" },
});
// lib.symbols.SystemParametersInfoW(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"。Unicode(-W) は new TextEncoder() ではなく UTF-16LE のバイト列(末尾に \x00\x00)を Uint8Array で渡す。
// 値渡し構造体は { struct: [ ...field types... ] } を使用。
<?php
$ffi = FFI::cdef(<<<C
int32_t SystemParametersInfoW(
    uint32_t uiAction,
    uint32_t uiParam,
    void* pvParam,
    uint32_t fWinIni);
C, "USER32.dll");
// $ffi->SystemParametersInfoW(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.UNICODE_OPTIONS);
    boolean SystemParametersInfoW(
        int uiAction,   // SYSTEM_PARAMETERS_INFO_ACTION
        int uiParam,   // DWORD
        Pointer pvParam,   // void* optional, in/out
        int fWinIni   // SYSTEM_PARAMETERS_INFO_UPDATE_FLAGS
    );
}
// Unicode(-W): WString(入力)/char[](出力)で UTF-16 をマーシャリング。
@[Link("user32")]
lib LibUSER32
  fun SystemParametersInfoW = SystemParametersInfoW(
    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 SystemParametersInfoWNative = Int32 Function(Uint32, Uint32, Pointer<Void>, Uint32);
typedef SystemParametersInfoWDart = int Function(int, int, Pointer<Void>, int);
final SystemParametersInfoW = DynamicLibrary.open('USER32.dll')
    .lookupFunction<SystemParametersInfoWNative, SystemParametersInfoWDart>('SystemParametersInfoW');
// 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 SystemParametersInfoW(
  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 'SystemParametersInfoW';
import Foreign
import Foreign.C.Types
import Foreign.C.String

foreign import stdcall safe "SystemParametersInfoW"
  c_SystemParametersInfoW :: 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 systemparametersinfow =
  foreign "SystemParametersInfoW"
    (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 ("SystemParametersInfoW" system-parameters-info-w :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 $SystemParametersInfoW = Win32::API::More->new('USER32',
    'BOOL SystemParametersInfoW(DWORD uiAction, DWORD uiParam, LPVOID pvParam, DWORD fWinIni)');
# my $ret = $SystemParametersInfoW->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 を使用。
# Unicode(-W): LPCWSTR/LPWSTR は Win32::API が UTF-16 変換を行う。

関連項目

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