SetDefaultLayoutOrTipUserReg 関数

指定したキーボード レイアウトまたはテキスト サービスを、ユーザー レジストリの既定の入力項目として設定します。

構文

BOOL CALLBACK SetDefaultLayoutOrTipUserReg(
  _In_opt_ LPCWSTR pszUserReg,
  _In_opt_ LPCWSTR pszSystemReg,
  _In_opt_ LPCWSTR pszSoftwareReg,
  _In_     LPCWSTR psz,
  _In_     DWORD   dwFlags
);

パラメーター

pszUserReg [in、オプション]

ユーザーのレジストリ パス。 このパラメーターが NULL である場合、HKEY_CURRENT_USER が使用されます。

pszSystemReg [in、オプション]

システムのレジストリ パス。 このパラメーターが NULL である場合、HKEY_LOCAL_MACHINE\System が使用されます。

pszSoftwareReg [in、オプション]

ソフトウェアのレジストリ パス。 このパラメーターが NULL である場合、HKEY_LOCAL_MACHINE\Software が使用されます。

psz [in]

キーボード レイアウト リストまたはテキスト サービスのプロファイル リストを表す文字列。

dwFlags [in]

以下のフラグを指定するビットフィールド。

Note

次の識別子は、public ヘッダー ファイルでは定義されていません。 16 進数の値を使用するか、識別子を #define する必要があります。 たとえば、SDLOT_NOAPPLYTOCURRENTSESSION を使用するには、コードに #define SDLOT_NOAPPLYTOCURRENTSESSION 0x00000001 を含める必要があります。

意味
SDLOT_NOAPPLYTOCURRENTSESSION
0x00000001
レジストリに設定を格納しますが、現在のセッションのランタイム キーボード設定は更新しません。 SetDefaultLayoutOrTipUserReg で代替レジストリ パスが設定されている場合は、このフラグを設定する必要があります。
SDLOT_APPLYTOCURRENTTHREAD
0x00000002
現在のスレッドに設定を直ちに適用します。

戻り値

リターン コード 説明
TRUE
関数は成功しました。
FALSE
未指定のエラーが発生しました。

解説

レイアウト リストの文字列形式は次のとおりです。

<LangID 1>:<KLID 1>;[...<LangID N>:<KLID N>

テキスト サービス プロファイル リストの文字列形式は次のとおりです。

<LangID 1>:{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx};

psz パラメーターの値の例を次に示します。

"0x0407:0x00000407"
"0x0407:0x00000407;0x040C:0x0000040C"
"0x0407:0x00000407;0x0412:{A028AE76-01B1-46C2-99C4-ACD9858AE02F}{B5FE1F02-D5F2-4445-9C03-C568F23C99A1};0x040C:0x0000040C"

この関数を定義するインポート ライブラリはないため、LoadLibraryGetProcAddress を使用してこの関数へのポインターを取得する必要があります。 次の例では、この関数へのポインターを取得する方法を示します。

Note

LoadLibrary を誤って使用すると、間違った DLL を読み込むことで、アプリケーションのセキュリティが損なわれる可能性があります。 さまざまなバージョンの Microsoft Windows で DLL を正しく読み込む方法については、「ダイナミック リンク ライブラリの検索順序」を参照してください。

typedef HRESULT (
    WINAPI *PTF_ SETDEFAULTLAYOUTORTIPUSERREG)( LPCWSTR pszUserReg, 
    LPCWSTR pszSystemReg, 
    LPCWSTR pszSoftwareReg, 
    LPCWSTR psz);

HMODULE hInputDLL = LoadLibrary(TEXT("input.dll"));
BOOL bRet = FALSE;

if(hInputDLL == NULL)
{
    //Error loading module -- fail as securely as possible 
}
else
{
    PTF_ SETDEFAULTLAYOUTORTIPUSERREG pfnSetDefaultLayoutOrTipUserReg;
    
    pfnSetDefaultLayoutOrTipUserReg = (PTF_ SETDEFAULTLAYOUTORTIPUSERREG)GetProcAddress(hInputDLL, "SetDefaultLayoutOrTipUserReg");

    if(pfnSetDefaultLayoutOrTipUserReg)
    {
        bRet = (*pfnSetDefaultLayoutOrTipUserReg)( pszUserReg, pszSystemReg, pszSoftwareReg, psz);
    }

    FreeLibrary(hInputDLL);
}

要件

要件 Value
サポートされている最小のクライアント
Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows Server 2008 [デスクトップ アプリのみ]
[DLL]
Input.dll