mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
[USER32] Simplify CliSaveImeHotKey (#7199)
Code diet. RegCreateKeyExW will create sub-keys recursively, so this code is okay. JIRA issue: CORE-19268 Simplify registry key creation code.
This commit is contained in:
parent
dcf0788f59
commit
063e5e2514
1 changed files with 20 additions and 43 deletions
|
@ -211,68 +211,45 @@ CliSaveImeHotKey(DWORD dwID, UINT uModifiers, UINT uVirtualKey, HKL hKL, BOOL bD
|
||||||
{
|
{
|
||||||
WCHAR szName[MAX_PATH];
|
WCHAR szName[MAX_PATH];
|
||||||
LONG error;
|
LONG error;
|
||||||
HKEY hControlPanel = NULL, hInputMethod = NULL, hHotKeys = NULL, hKey = NULL;
|
HKEY hKey;
|
||||||
BOOL ret = FALSE, bRevertOnFailure = FALSE;
|
BOOL ret = FALSE, bRevertOnFailure = FALSE;
|
||||||
|
|
||||||
|
StringCchPrintfW(szName, _countof(szName),
|
||||||
|
L"Control Panel\\Input Method\\Hot Keys\\%08lX", dwID);
|
||||||
|
|
||||||
if (bDelete)
|
if (bDelete)
|
||||||
{
|
{
|
||||||
StringCchPrintfW(szName, _countof(szName),
|
|
||||||
L"Control Panel\\Input Method\\Hot Keys\\%08lX", dwID);
|
|
||||||
error = RegDeleteKeyW(HKEY_CURRENT_USER, szName);
|
error = RegDeleteKeyW(HKEY_CURRENT_USER, szName);
|
||||||
return (error == ERROR_SUCCESS);
|
return (error == ERROR_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open "Control Panel"
|
error = RegCreateKeyExW(HKEY_CURRENT_USER, szName, 0, NULL, 0, KEY_WRITE, NULL, &hKey, NULL);
|
||||||
error = RegCreateKeyExW(HKEY_CURRENT_USER, L"Control Panel", 0, NULL, 0, KEY_ALL_ACCESS,
|
|
||||||
NULL, &hControlPanel, NULL);
|
|
||||||
if (error == ERROR_SUCCESS)
|
if (error == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
// Open "Input Method"
|
bRevertOnFailure = TRUE;
|
||||||
error = RegCreateKeyExW(hControlPanel, L"Input Method", 0, NULL, 0, KEY_ALL_ACCESS,
|
|
||||||
NULL, &hInputMethod, NULL);
|
// Set "Virtual Key"
|
||||||
|
error = RegSetValueExW(hKey, L"Virtual Key", 0, REG_BINARY,
|
||||||
|
(LPBYTE)&uVirtualKey, sizeof(uVirtualKey));
|
||||||
if (error == ERROR_SUCCESS)
|
if (error == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
// Open "Hot Keys"
|
// Set "Key Modifiers"
|
||||||
error = RegCreateKeyExW(hInputMethod, L"Hot Keys", 0, NULL, 0, KEY_ALL_ACCESS,
|
error = RegSetValueExW(hKey, L"Key Modifiers", 0, REG_BINARY,
|
||||||
NULL, &hHotKeys, NULL);
|
(LPBYTE)&uModifiers, sizeof(uModifiers));
|
||||||
if (error == ERROR_SUCCESS)
|
if (error == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
// Open "Key"
|
// Set "Target IME"
|
||||||
StringCchPrintfW(szName, _countof(szName), L"%08lX", dwID);
|
error = RegSetValueExW(hKey, L"Target IME", 0, REG_BINARY,
|
||||||
error = RegCreateKeyExW(hHotKeys, szName, 0, NULL, 0, KEY_ALL_ACCESS,
|
(LPBYTE)&hKL, sizeof(hKL));
|
||||||
NULL, &hKey, NULL);
|
|
||||||
if (error == ERROR_SUCCESS)
|
if (error == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
bRevertOnFailure = TRUE;
|
// Success!
|
||||||
|
ret = TRUE;
|
||||||
// Set "Virtual Key"
|
bRevertOnFailure = FALSE;
|
||||||
error = RegSetValueExW(hKey, L"Virtual Key", 0, REG_BINARY,
|
|
||||||
(LPBYTE)&uVirtualKey, sizeof(uVirtualKey));
|
|
||||||
if (error == ERROR_SUCCESS)
|
|
||||||
{
|
|
||||||
// Set "Key Modifiers"
|
|
||||||
error = RegSetValueExW(hKey, L"Key Modifiers", 0, REG_BINARY,
|
|
||||||
(LPBYTE)&uModifiers, sizeof(uModifiers));
|
|
||||||
if (error == ERROR_SUCCESS)
|
|
||||||
{
|
|
||||||
// Set "Target IME"
|
|
||||||
error = RegSetValueExW(hKey, L"Target IME", 0, REG_BINARY,
|
|
||||||
(LPBYTE)&hKL, sizeof(hKL));
|
|
||||||
if (error == ERROR_SUCCESS)
|
|
||||||
{
|
|
||||||
// Success!
|
|
||||||
ret = TRUE;
|
|
||||||
bRevertOnFailure = FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
RegCloseKey(hKey);
|
|
||||||
}
|
}
|
||||||
RegCloseKey(hHotKeys);
|
|
||||||
}
|
}
|
||||||
RegCloseKey(hInputMethod);
|
|
||||||
}
|
}
|
||||||
RegCloseKey(hControlPanel);
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bRevertOnFailure)
|
if (bRevertOnFailure)
|
||||||
|
|
Loading…
Reference in a new issue