}\r
\r
// for file and directory name completion\r
- if (CProfile::IsNT()) {\r
- HKEY hKey = NULL;\r
-\r
- if (RegOpenKeyEx(HKEY_CURRENT_USER, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_FILE_COMPLETION)), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS\r
- || RegOpenKeyEx(HKEY_LOCAL_MACHINE, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_FILE_COMPLETION)), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) {\r
- DWORD dwType = REG_DWORD;\r
- DWORD dwCompletionChar = 0;\r
- DWORD dwcbData = sizeof(dwCompletionChar);\r
- RegQueryValueEx(hKey, CString(MAKEINTRESOURCE(IDS_COMPLETION_CHAR)), NULL, &dwType,\r
- (LPBYTE)&dwCompletionChar, &dwcbData);\r
- RegCloseKey(hKey);\r
- if (dwCompletionChar == 0x9) {\r
- m_cFileCompletion.SetCheck(1);\r
- }\r
+ HKEY hKey = NULL;\r
+\r
+ if (RegOpenKeyEx(HKEY_CURRENT_USER, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_FILE_COMPLETION)), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS\r
+ || RegOpenKeyEx(HKEY_LOCAL_MACHINE, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_FILE_COMPLETION)), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) {\r
+ DWORD dwType = REG_DWORD;\r
+ DWORD dwCompletionChar = 0;\r
+ DWORD dwcbData = sizeof(dwCompletionChar);\r
+ RegQueryValueEx(hKey, CString(MAKEINTRESOURCE(IDS_COMPLETION_CHAR)), NULL, &dwType,\r
+ (LPBYTE)&dwCompletionChar, &dwcbData);\r
+ RegCloseKey(hKey);\r
+ if (dwCompletionChar == 0x9) {\r
+ m_cFileCompletion.SetCheck(1);\r
}\r
- } else if (CProfile::Is9x()) {\r
- m_cFileCompletion.EnableWindow(FALSE);\r
}\r
\r
// for icons in the taskbar's status area\r
}\r
\r
// for file and directory name completion\r
- if (CProfile::IsNT()) {\r
- HKEY hKey = NULL;\r
-\r
- if (RegCreateKeyEx(HKEY_CURRENT_USER, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_FILE_COMPLETION)), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, &hKey, NULL) == ERROR_SUCCESS) {\r
- DWORD dwCompletionChar;\r
- if (m_cFileCompletion.GetCheck() == 1) {\r
- dwCompletionChar = 0x9; // use enum\r
- } else {\r
- dwCompletionChar = 0x0;\r
- }\r
- RegSetValueEx(hKey, CString(MAKEINTRESOURCE(IDS_COMPLETION_CHAR)), 0, REG_DWORD,\r
- (LPBYTE)&dwCompletionChar, sizeof(dwCompletionChar));\r
- RegCloseKey(hKey);\r
+ HKEY hKey = NULL;\r
+\r
+ if (RegCreateKeyEx(HKEY_CURRENT_USER, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_FILE_COMPLETION)), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, &hKey, NULL) == ERROR_SUCCESS) {\r
+ DWORD dwCompletionChar;\r
+ if (m_cFileCompletion.GetCheck() == 1) {\r
+ dwCompletionChar = 0x9; // use enum\r
+ } else {\r
+ dwCompletionChar = 0x0;\r
}\r
+ RegSetValueEx(hKey, CString(MAKEINTRESOURCE(IDS_COMPLETION_CHAR)), 0, REG_DWORD,\r
+ (LPBYTE)&dwCompletionChar, sizeof(dwCompletionChar));\r
+ RegCloseKey(hKey);\r
}\r
\r
// for icons in the taskbar's status area\r
#include "MainFrm.h"\r
#include "DotXkeymacs.h"\r
#include <Imm.h>\r
-#include <Shlwapi.h> // Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with Internet Explorer 4.0 or later). \r
- // Windows 95/98/Me: Requires Windows 98 (or Windows 95 with Internet Explorer 4.0 or later). \r
+#include <Shlwapi.h>\r
+#include <TlHelp32.h>\r
+\r
\r
#ifdef _DEBUG\r
#undef THIS_FILE\r
ZeroMemory(&pTask[i], sizeof(PTASK_LIST));\r
}\r
\r
- OSVERSIONINFO verInfo = {0};\r
- verInfo.dwOSVersionInfoSize = sizeof (verInfo);\r
- GetVersionEx(&verInfo);\r
- if (verInfo.dwPlatformId == VER_PLATFORM_WIN32_NT\r
- && verInfo.dwMajorVersion < 5) {\r
- return GetTaskListNT(pTask, dwNumTasks);\r
- }\r
-\r
- HMODULE hKernel = GetModuleHandle(_T("KERNEL32.DLL"));\r
- if (!hKernel) {\r
- return 0;\r
- }\r
-\r
- CREATESNAPSHOT pCreateToolhelp32Snapshot = (CREATESNAPSHOT)GetProcAddress(hKernel, "CreateToolhelp32Snapshot");\r
- if (!pCreateToolhelp32Snapshot) {\r
- return 0;\r
- }\r
-\r
- PROCESSWALK pProcess32First = (PROCESSWALK)GetProcAddress(hKernel, "Process32First");\r
- if (!pProcess32First) {\r
- return 0;\r
- }\r
-\r
- PROCESSWALK pProcess32Next = (PROCESSWALK)GetProcAddress(hKernel, "Process32Next");\r
- if (!pProcess32Next) {\r
- return 0;\r
- }\r
-\r
- HANDLE hProcessSnap = pCreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);\r
+ HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);\r
if (hProcessSnap == (HANDLE)-1) {\r
return 0;\r
}\r
\r
DWORD dwTaskCount = 0;\r
PROCESSENTRY32 processEntry32 = {sizeof(PROCESSENTRY32)};\r
- if (pProcess32First(hProcessSnap, &processEntry32)) {\r
+ if (Process32First(hProcessSnap, &processEntry32)) {\r
do {\r
LPTSTR pCurChar = NULL;\r
for (pCurChar = processEntry32.szExeFile + lstrlen(processEntry32.szExeFile); *pCurChar != _T('\\') && pCurChar != processEntry32.szExeFile; --pCurChar) {\r
\r
++dwTaskCount;\r
++pTask;\r
- } while (dwTaskCount < dwNumTasks && pProcess32Next(hProcessSnap, &processEntry32));\r
+ } while (dwTaskCount < dwNumTasks && Process32Next(hProcessSnap, &processEntry32));\r
}\r
\r
CloseHandle(hProcessSnap);\r
return dwTaskCount;\r
}\r
\r
-LPBYTE CProfile::GetCounters()\r
-{\r
- LANGID lid = MAKELANGID(LANG_ENGLISH, SUBLANG_NEUTRAL);\r
- CString szSubKey;\r
- szSubKey.Format(CString(MAKEINTRESOURCE(IDS_REGSUBKEY_PERF)), lid);\r
- HKEY hKey = NULL;\r
- if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, szSubKey, 0, KEY_READ, &hKey) != ERROR_SUCCESS) {\r
- return NULL;\r
- }\r
-\r
- DWORD dwSize = 0;\r
- if (RegQueryValueEx(hKey, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_COUNTERS)), NULL, NULL, NULL, &dwSize) != ERROR_SUCCESS) {\r
- RegCloseKey(hKey);\r
- return NULL;\r
- }\r
- LPBYTE pCounters = (LPBYTE) calloc(dwSize, sizeof(BYTE));\r
- if (pCounters == NULL) {\r
- RegCloseKey(hKey);\r
- return NULL;\r
- }\r
- if (RegQueryValueEx(hKey, CString(MAKEINTRESOURCE(IDS_REGSUBKEY_COUNTERS)), NULL, NULL, pCounters, &dwSize) != ERROR_SUCCESS) {\r
- RegCloseKey(hKey);\r
- free(pCounters);\r
- return NULL;\r
- }\r
- RegCloseKey(hKey);\r
- return pCounters;\r
-}\r
-\r
-BOOL CProfile::GetProcessInfo(CString *const szProcessName, DWORD *const dwProcessId)\r
-{\r
- LPBYTE pCounters = GetCounters();\r
- if (!pCounters) {\r
- return FALSE;\r
- }\r
- LPTSTR pTopOfString = (LPTSTR)pCounters;\r
- while (*pTopOfString) {\r
- if (_tcsicmp(pTopOfString, CString(MAKEINTRESOURCE(IDS_PROCESS))) == 0) {\r
- for (LPTSTR p2 = pTopOfString - 2; _istdigit(*p2); --p2) {\r
- ;\r
- }\r
- szProcessName->Format(_T("%s"), p2 + 1); // 230\r
- } else if (_tcsicmp(pTopOfString, CString(MAKEINTRESOURCE(IDS_PROCESSID))) == 0) {\r
- for (LPTSTR p2 = pTopOfString - 2; _istdigit(*p2); --p2) {\r
- ;\r
- }\r
- *dwProcessId = _ttol(p2 + 1); // 784\r
- }\r
- pTopOfString += (_tcslen(pTopOfString) + 1);\r
- }\r
- free(pCounters);\r
- return TRUE;\r
-}\r
-\r
-PPERF_DATA_BLOCK CProfile::GetPerformanceData(const CString szProcessName)\r
-{\r
- DWORD dwSize = INITIAL_SIZE;\r
- PPERF_DATA_BLOCK pPerformanceData = (PPERF_DATA_BLOCK) calloc(dwSize, sizeof(BYTE));\r
- if (pPerformanceData == NULL) {\r
- return NULL;\r
- }\r
-\r
- for (;;) {\r
- switch (RegQueryValueEx(HKEY_PERFORMANCE_DATA, szProcessName, NULL, NULL, (LPBYTE)pPerformanceData, &dwSize)) {\r
- case ERROR_SUCCESS:\r
- if (0 < dwSize\r
- && pPerformanceData->Signature[0] == (WCHAR)'P'\r
- && pPerformanceData->Signature[1] == (WCHAR)'E'\r
- && pPerformanceData->Signature[2] == (WCHAR)'R'\r
- && pPerformanceData->Signature[3] == (WCHAR)'F') {\r
- return pPerformanceData;\r
- }\r
- case ERROR_MORE_DATA:\r
- dwSize += EXTEND_SIZE;\r
- pPerformanceData = (PPERF_DATA_BLOCK) realloc(pPerformanceData, dwSize);\r
- if (!pPerformanceData) {\r
- return NULL;\r
- }\r
- memset(pPerformanceData, 0, dwSize);\r
- break;\r
- default:\r
- free(pPerformanceData);\r
- return NULL;\r
- }\r
- }\r
-}\r
-\r
-// Add running application's names to the list\r
-// only for _Windows NT_\r
-DWORD CProfile::GetTaskListNT(PTASK_LIST pTask, DWORD dwNumTasks)\r
-{\r
- CString szProcessName;\r
- DWORD dwProcessIdTitle = 0;\r
- if (!GetProcessInfo(&szProcessName, &dwProcessIdTitle)) {\r
- return dwNumTasks;\r
- }\r
-\r
- PPERF_DATA_BLOCK pPerformanceData = GetPerformanceData(szProcessName);\r
- if (!pPerformanceData) {\r
- return dwNumTasks;\r
- }\r
-\r
- PPERF_OBJECT_TYPE pObj = (PPERF_OBJECT_TYPE) ((DWORD)pPerformanceData + pPerformanceData->HeaderLength);\r
- PPERF_COUNTER_DEFINITION pCounterDef = (PPERF_COUNTER_DEFINITION) ((DWORD)pObj + pObj->HeaderLength);\r
- DWORD dwProcessIdCounter = 0;\r
- for (DWORD i = 0; i < pObj->NumCounters; ++i) {\r
- if (pCounterDef->CounterNameTitleIndex == dwProcessIdTitle) {\r
- dwProcessIdCounter = pCounterDef->CounterOffset;\r
- break;\r
- }\r
- ++pCounterDef;\r
- }\r
-\r
- dwNumTasks = min(dwNumTasks - 1, (DWORD)pObj->NumInstances);\r
- PPERF_INSTANCE_DEFINITION pInst = (PPERF_INSTANCE_DEFINITION) ((DWORD)pObj + pObj->DefinitionLength);\r
- for (i = 0; i < dwNumTasks; ++i) {\r
- LPCWSTR pProcessName = (LPCWSTR) ((DWORD)pInst + pInst->NameOffset);\r
-\r
- CHAR szProcessName[MAX_PATH] = {'\0'};\r
- if (!WideCharToMultiByte(CP_ACP, 0, pProcessName, -1, szProcessName, sizeof(szProcessName), NULL, NULL)) {\r
- _tcscpy(pTask->ProcessName, CString(MAKEINTRESOURCE(IDS_UNKNOWN_TASK)));\r
- }\r
-\r
- if (_tcslen(szProcessName)+4 <= sizeof(pTask->ProcessName)) {\r
- _tcscpy(pTask->ProcessName, szProcessName);\r
- _tcscat(pTask->ProcessName, CString(MAKEINTRESOURCE(IDS_EXTENSION_EXECUTABLE)));\r
- }\r
-\r
- PPERF_COUNTER_BLOCK pCounter = (PPERF_COUNTER_BLOCK) ((DWORD)pInst + pInst->ByteLength);\r
- pTask->dwProcessId = *((LPDWORD) ((DWORD)pCounter + dwProcessIdCounter));\r
- if (pTask->dwProcessId == 0) {\r
- pTask->dwProcessId = (DWORD) -2;\r
- }\r
-\r
- ++pTask;\r
- pInst = (PPERF_INSTANCE_DEFINITION) ((DWORD)pCounter + pCounter->ByteLength);\r
- }\r
-\r
- free(pPerformanceData);\r
- return dwNumTasks;\r
-}\r
-\r
// return application index\r
// and update setting style\r
// if there is NOT the application in the data, this function takes care of it.\r
CString szSubKey;\r
CString szValueName;\r
HKEY hKey = HKEY_LOCAL_MACHINE;\r
- if (IsNT()) {\r
- switch (hkeyType) {\r
- case CURRENT_USER:\r
- hKey = HKEY_CURRENT_USER;\r
- szSubKey.LoadString(IDS_REGSUBKEY_KEYBOARD_LAYOUT);\r
- break;\r
- case LOCAL_MACHINE:\r
- szSubKey.LoadString(IDS_REGSUBKEY_KEYBOARD_LAYOUT_ANY_USER);\r
- break;\r
- default:\r
- return;\r
- }\r
- szValueName.LoadString(IDS_SCANCODE_MAP);\r
- } else if (Is9x()) {\r
- szSubKey.LoadString(IDS_REGSUBKEY_KEY_REMAP);\r
- szValueName.LoadString(IDS_0);\r
- } else {\r
+ switch (hkeyType) {\r
+ case CURRENT_USER:\r
+ hKey = HKEY_CURRENT_USER;\r
+ szSubKey.LoadString(IDS_REGSUBKEY_KEYBOARD_LAYOUT);\r
+ break;\r
+ case LOCAL_MACHINE:\r
+ szSubKey.LoadString(IDS_REGSUBKEY_KEYBOARD_LAYOUT_ANY_USER);\r
+ break;\r
+ default:\r
return;\r
}\r
+ szValueName.LoadString(IDS_SCANCODE_MAP);\r
\r
HKEY hkResult = NULL;\r
if (RegOpenKeyEx(hKey, szSubKey, 0, KEY_QUERY_VALUE, &hkResult) == ERROR_SUCCESS) {\r
}\r
RegCloseKey(hkResult);\r
\r
- if (IsNT()) {\r
- if (lpData && dwData) {\r
- DWORD offset = 0;\r
- offset += 8; // skip Version Information and Flags\r
- DWORD *pdwMappings = (DWORD *)(lpData + offset);\r
- offset += 4; // skip Number of Mappings\r
- DWORD *pdwNullTerminator = (DWORD *)(lpData + dwData - 4);\r
-\r
- if (4 * *pdwMappings + 12 != dwData) {\r
- // illegal data\r
- } else if (*pdwNullTerminator != 0) {\r
- // illegal data\r
- } else {\r
- while (offset < dwData - 4) {\r
- ScanCodeMapping *pMapping = (ScanCodeMapping *)(lpData + offset);\r
- offset += 4; // go to next data\r
- m_CurrentScanCodeMap[hkeyType][PrefixedScanCode2ID(pMapping->original.nPrefixedScanCode)][pMapping->original.nScanCode].nPrefixedScanCode = pMapping->current.nPrefixedScanCode;\r
- m_CurrentScanCodeMap[hkeyType][PrefixedScanCode2ID(pMapping->original.nPrefixedScanCode)][pMapping->original.nScanCode].nScanCode = pMapping->current.nScanCode;\r
- m_ScanCodeMap[hkeyType][PrefixedScanCode2ID(pMapping->original.nPrefixedScanCode)][pMapping->original.nScanCode].nPrefixedScanCode = pMapping->current.nPrefixedScanCode;\r
- m_ScanCodeMap[hkeyType][PrefixedScanCode2ID(pMapping->original.nPrefixedScanCode)][pMapping->original.nScanCode].nScanCode = pMapping->current.nScanCode;\r
- }\r
+ if (lpData && dwData) {\r
+ DWORD offset = 0;\r
+ offset += 8; // skip Version Information and Flags\r
+ DWORD *pdwMappings = (DWORD *)(lpData + offset);\r
+ offset += 4; // skip Number of Mappings\r
+ DWORD *pdwNullTerminator = (DWORD *)(lpData + dwData - 4);\r
+\r
+ if (4 * *pdwMappings + 12 != dwData) {\r
+ // illegal data\r
+ } else if (*pdwNullTerminator != 0) {\r
+ // illegal data\r
+ } else {\r
+ while (offset < dwData - 4) {\r
+ ScanCodeMapping *pMapping = (ScanCodeMapping *)(lpData + offset);\r
+ offset += 4; // go to next data\r
+ m_CurrentScanCodeMap[hkeyType][PrefixedScanCode2ID(pMapping->original.nPrefixedScanCode)][pMapping->original.nScanCode].nPrefixedScanCode = pMapping->current.nPrefixedScanCode;\r
+ m_CurrentScanCodeMap[hkeyType][PrefixedScanCode2ID(pMapping->original.nPrefixedScanCode)][pMapping->original.nScanCode].nScanCode = pMapping->current.nScanCode;\r
+ m_ScanCodeMap[hkeyType][PrefixedScanCode2ID(pMapping->original.nPrefixedScanCode)][pMapping->original.nScanCode].nPrefixedScanCode = pMapping->current.nPrefixedScanCode;\r
+ m_ScanCodeMap[hkeyType][PrefixedScanCode2ID(pMapping->original.nPrefixedScanCode)][pMapping->original.nScanCode].nScanCode = pMapping->current.nScanCode;\r
}\r
}\r
}\r
CString szSubKey;\r
CString szValueName;\r
HKEY hKey = HKEY_LOCAL_MACHINE;\r
- if (IsNT()) {\r
- switch (hkeyType) {\r
- case CURRENT_USER:\r
- hKey = HKEY_CURRENT_USER;\r
- szSubKey.LoadString(IDS_REGSUBKEY_KEYBOARD_LAYOUT);\r
- break;\r
- case LOCAL_MACHINE:\r
- szSubKey.LoadString(IDS_REGSUBKEY_KEYBOARD_LAYOUT_ANY_USER);\r
- break;\r
- default:\r
- return;\r
- }\r
- szValueName.LoadString(IDS_SCANCODE_MAP);\r
- } else if (Is9x()) {\r
- szSubKey.LoadString(IDS_REGSUBKEY_KEY_REMAP);\r
- szValueName.LoadString(IDS_0);\r
- } else {\r
+ switch (hkeyType) {\r
+ case CURRENT_USER:\r
+ hKey = HKEY_CURRENT_USER;\r
+ szSubKey.LoadString(IDS_REGSUBKEY_KEYBOARD_LAYOUT);\r
+ break;\r
+ case LOCAL_MACHINE:\r
+ szSubKey.LoadString(IDS_REGSUBKEY_KEYBOARD_LAYOUT_ANY_USER);\r
+ break;\r
+ default:\r
return;\r
}\r
+ szValueName.LoadString(IDS_SCANCODE_MAP);\r
\r
HKEY hkResult = NULL;\r
if (RegCreateKeyEx(hKey, szSubKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, &hkResult, NULL) == ERROR_SUCCESS) {\r
- if (IsNT()) {\r
- DWORD cbData = GetScanCodeLength(hkeyType);\r
- if (cbData <= 16) {\r
- RegDeleteValue(hkResult, szValueName);\r
- } else {\r
- LPBYTE lpData = new BYTE[cbData];\r
- memset(lpData, 0, sizeof(BYTE) * cbData);\r
+ DWORD cbData = GetScanCodeLength(hkeyType);\r
+ if (cbData <= 16) {\r
+ RegDeleteValue(hkResult, szValueName);\r
+ } else {\r
+ LPBYTE lpData = new BYTE[cbData];\r
+ memset(lpData, 0, sizeof(BYTE) * cbData);\r
\r
- {\r
- DWORD dwMappings = (cbData - 12) / 4;\r
- memmove(lpData + 8, &dwMappings, 4);\r
- }\r
+ {\r
+ DWORD dwMappings = (cbData - 12) / 4;\r
+ memmove(lpData + 8, &dwMappings, 4);\r
+ }\r
\r
- int offset = 12;\r
- for (int nPrefixedScanCodeID = 0; nPrefixedScanCodeID < 3; ++nPrefixedScanCodeID) {\r
- for (int nScanCode = 0; nScanCode < 256; ++nScanCode) {\r
- if (m_ScanCodeMap[hkeyType][nPrefixedScanCodeID][nScanCode].nScanCode) {\r
- ScanCodeMapping sScanCodeMapping = {'\0'};\r
- sScanCodeMapping.original.nPrefixedScanCode = PrefixedScanCodeID2Code(nPrefixedScanCodeID);\r
- sScanCodeMapping.original.nScanCode = (BYTE)nScanCode;\r
- sScanCodeMapping.current.nPrefixedScanCode = m_ScanCodeMap[hkeyType][nPrefixedScanCodeID][nScanCode].nPrefixedScanCode;\r
- sScanCodeMapping.current.nScanCode = m_ScanCodeMap[hkeyType][nPrefixedScanCodeID][nScanCode].nScanCode;\r
- memcpy(lpData + offset, &sScanCodeMapping, sizeof(sScanCodeMapping));\r
- offset += sizeof(sScanCodeMapping);\r
- }\r
+ int offset = 12;\r
+ for (int nPrefixedScanCodeID = 0; nPrefixedScanCodeID < 3; ++nPrefixedScanCodeID) {\r
+ for (int nScanCode = 0; nScanCode < 256; ++nScanCode) {\r
+ if (m_ScanCodeMap[hkeyType][nPrefixedScanCodeID][nScanCode].nScanCode) {\r
+ ScanCodeMapping sScanCodeMapping = {'\0'};\r
+ sScanCodeMapping.original.nPrefixedScanCode = PrefixedScanCodeID2Code(nPrefixedScanCodeID);\r
+ sScanCodeMapping.original.nScanCode = (BYTE)nScanCode;\r
+ sScanCodeMapping.current.nPrefixedScanCode = m_ScanCodeMap[hkeyType][nPrefixedScanCodeID][nScanCode].nPrefixedScanCode;\r
+ sScanCodeMapping.current.nScanCode = m_ScanCodeMap[hkeyType][nPrefixedScanCodeID][nScanCode].nScanCode;\r
+ memcpy(lpData + offset, &sScanCodeMapping, sizeof(sScanCodeMapping));\r
+ offset += sizeof(sScanCodeMapping);\r
}\r
}\r
- RegSetValueEx(hkResult, szValueName, 0, REG_BINARY, lpData, cbData);\r
-\r
- delete[] lpData;\r
- lpData = NULL;\r
}\r
+ RegSetValueEx(hkResult, szValueName, 0, REG_BINARY, lpData, cbData);\r
+\r
+ delete[] lpData;\r
+ lpData = NULL;\r
}\r
RegCloseKey(hkResult);\r
}\r
}\r
}\r
\r
-// Return True if Windows 95, Windows 98, or Windows Me. \r
-BOOL CProfile::Is9x()\r
-{\r
- OSVERSIONINFO info = {sizeof(OSVERSIONINFO)};\r
- GetVersionEx(&info);\r
-\r
- if (info.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) {\r
- return TRUE;\r
- }\r
- return FALSE;\r
-}\r
-\r
-// Return True if Windows NT 4.0, Windows 2000, Windows XP, Windows 2003 or Windows Vista.\r
-BOOL CProfile::IsNT()\r
-{\r
- OSVERSIONINFO info = {sizeof(OSVERSIONINFO)};\r
- GetVersionEx(&info);\r
-\r
- if (info.dwPlatformId == VER_PLATFORM_WIN32_NT) {\r
- return TRUE;\r
- }\r
- return FALSE;\r
-}\r
-\r
// Return True if Windows Vista or later.\r
BOOL CProfile::IsVistaOrLater()\r
{\r
{\r
BOOL rc = TRUE;\r
\r
- if (IsNT()) {\r
- HANDLE hToken;\r
- if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) {\r
- LUID luid;\r
- if (LookupPrivilegeValue(NULL, lpName, &luid)) {\r
- TOKEN_PRIVILEGES tp;\r
- tp.PrivilegeCount = 1;\r
- tp.Privileges[0].Luid = luid;\r
- tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;\r
-\r
- if (!::AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), NULL, NULL)) {\r
- rc = FALSE;\r
- }\r
- } else {\r
+ HANDLE hToken;\r
+ if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) {\r
+ LUID luid;\r
+ if (LookupPrivilegeValue(NULL, lpName, &luid)) {\r
+ TOKEN_PRIVILEGES tp;\r
+ tp.PrivilegeCount = 1;\r
+ tp.Privileges[0].Luid = luid;\r
+ tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;\r
+\r
+ if (!::AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), NULL, NULL)) {\r
rc = FALSE;\r
}\r
- CloseHandle(hToken);\r
} else {\r
rc = FALSE;\r
}\r
+ CloseHandle(hToken);\r
+ } else {\r
+ rc = FALSE;\r
}\r
\r
return rc;\r
{\r
BOOL rc = TRUE;\r
\r
- if (IsNT()) {\r
- HANDLE hToken;\r
- if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) {\r
- if (!::AdjustTokenPrivileges(hToken, TRUE, NULL, NULL, NULL, NULL)) {\r
- rc = FALSE;\r
- }\r
- CloseHandle(hToken);\r
- } else {\r
+ HANDLE hToken;\r
+ if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) {\r
+ if (!::AdjustTokenPrivileges(hToken, TRUE, NULL, NULL, NULL, NULL)) {\r
rc = FALSE;\r
}\r
+ CloseHandle(hToken);\r
+ } else {\r
+ rc = FALSE;\r
}\r
\r
return rc;\r