Поделиться через


Функция 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]

Битовое поле, указывающее следующие флаги:

Примечание.

Следующие идентификаторы не определены в общедоступном файле заголовка. Необходимо либо использовать шестнадцатеричное значение, либо #define идентификаторов. Например, чтобы использовать SDLOT_NOAPPLYTOCURRENTSESSION, необходимо включить #define SDLOT_NOAPPLYTOCURRENTSESSION 0x00000001 в код.

Значение Значение
SDLOT_NOAPPLYTOCURRENTSESSION
0x00000001
Сохраняет параметр в реестре, но не обновляет параметр клавиатуры среды выполнения текущего сеанса. Если альтернативный путь реестра задан в SetDefaultLayoutOrTipUserReg, этот флаг должен быть установлен.
SDLOT_APPLYTOCURRENTTHREAD
0x00000002
Применяет параметр немедленно к текущему потоку.

Возвращаемое значение

Код возврата Description
TRUE
Функция была успешной.
FALSE
Произошла неизвестная ошибка.

Замечания

Строковый формат списка макетов:

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

Строковый формат списка профилей текстовых служб:

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

Ниже приведен пример значения для параметра psz :

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

Примеры

Не существует библиотеки импорта, которая определяет эту функцию, поэтому необходимо получить указатель на эту функцию с помощью LoadLibrary и GetProcAddress. В следующем примере показано, как получить указатель на эту функцию.

Примечание.

Использование LoadLibrary неправильно может нарушить безопасность приложения, загрузив неправильную библиотеку DLL. Сведения о том, как правильно загружать библиотеки DLL с различными версиями Microsoft Windows, см. в порядке поиска библиотек динамической компоновки.

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);
}

Requirements

Требование Значение
Минимальная версия клиента
Windows Vista [только классические приложения]
Минимальная версия сервера
Windows Server 2008 [только классические приложения]
DLL-библиотеки
Input.dll