{
WCHAR szName[MAX_PATH];
LONG error;
- HKEY hControlPanel = NULL, hInputMethod = NULL, hHotKeys = NULL, hKey = NULL;
+ HKEY hKey;
BOOL ret = FALSE, bRevertOnFailure = FALSE;
+ StringCchPrintfW(szName, _countof(szName),
+ L"Control Panel\\Input Method\\Hot Keys\\%08lX", dwID);
+
if (bDelete)
{
- StringCchPrintfW(szName, _countof(szName),
- L"Control Panel\\Input Method\\Hot Keys\\%08lX", dwID);
error = RegDeleteKeyW(HKEY_CURRENT_USER, szName);
return (error == ERROR_SUCCESS);
}
- // Open "Control Panel"
- error = RegCreateKeyExW(HKEY_CURRENT_USER, L"Control Panel", 0, NULL, 0, KEY_ALL_ACCESS,
- NULL, &hControlPanel, NULL);
+ error = RegCreateKeyExW(HKEY_CURRENT_USER, szName, 0, NULL, 0, KEY_WRITE, NULL, &hKey, NULL);
if (error == ERROR_SUCCESS)
{
- // Open "Input Method"
- error = RegCreateKeyExW(hControlPanel, L"Input Method", 0, NULL, 0, KEY_ALL_ACCESS,
- NULL, &hInputMethod, NULL);
+ bRevertOnFailure = TRUE;
+
+ // Set "Virtual Key"
+ error = RegSetValueExW(hKey, L"Virtual Key", 0, REG_BINARY,
+ (LPBYTE)&uVirtualKey, sizeof(uVirtualKey));
if (error == ERROR_SUCCESS)
{
- // Open "Hot Keys"
- error = RegCreateKeyExW(hInputMethod, L"Hot Keys", 0, NULL, 0, KEY_ALL_ACCESS,
- NULL, &hHotKeys, NULL);
+ // Set "Key Modifiers"
+ error = RegSetValueExW(hKey, L"Key Modifiers", 0, REG_BINARY,
+ (LPBYTE)&uModifiers, sizeof(uModifiers));
if (error == ERROR_SUCCESS)
{
- // Open "Key"
- StringCchPrintfW(szName, _countof(szName), L"%08lX", dwID);
- error = RegCreateKeyExW(hHotKeys, szName, 0, NULL, 0, KEY_ALL_ACCESS,
- NULL, &hKey, NULL);
+ // Set "Target IME"
+ error = RegSetValueExW(hKey, L"Target IME", 0, REG_BINARY,
+ (LPBYTE)&hKL, sizeof(hKL));
if (error == ERROR_SUCCESS)
{
- bRevertOnFailure = TRUE;
-
- // Set "Virtual Key"
- 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);
+ // Success!
+ ret = TRUE;
+ bRevertOnFailure = FALSE;
}
- RegCloseKey(hHotKeys);
}
- RegCloseKey(hInputMethod);
}
- RegCloseKey(hControlPanel);
+ RegCloseKey(hKey);
}
if (bRevertOnFailure)