Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.117.91.153] |
|
Сообщ.
#1
,
|
|
|
HKEY hKey; CString cKeyName = _T(""); if (::RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\MyProgram\\Params"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) { TCHAR szData[256] = {0}; DWORD dwKeyDataType; DWORD dwDataBufSize = 256; for (byte i = 1; i < 254; i++) { cKeyName.Format(_T("Param%u"), i); LONG hres = ::RegQueryValueEx(hKey, cKeyName, NULL, &dwKeyDataType, (LPBYTE)&szData, &dwDataBufSize); if (hres == ERROR_SUCCESS) { switch (dwKeyDataType) { case REG_SZ: m_ComboParams.AddString(szData); ZeroMemory(szData, 1); break; } } else { break; } } ::RegCloseKey(hKey); } В разделе Params несколько строковых значений с именами Param1, Param2, Param3 и т.д. Почему-то этим кодом читается только первый параметр Param1, а дальше возвращается код ошибки, типа "файл не найден". Подскажите, в чем дело, как поправить. |
Сообщ.
#2
,
|
|
|
Разобрался.
HKEY hKey; CString cKeyName = _T(""); if (::RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\MyProgram\\Params"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) { TCHAR szData[256]; ZeroMemory(szData, 1); DWORD dwKeyDataType; DWORD dwDataBufSize = 256; for (byte i = 1; i < 254; i++) { cKeyName.Format(_T("Param%u"), i); LONG hres = ::RegQueryValueEx(hKey, cKeyName, NULL, &dwKeyDataType, (LPBYTE)&szData, &dwDataBufSize); if (hres == ERROR_SUCCESS) { switch (dwKeyDataType) { case REG_SZ: m_ComboParams.AddString(szData); ZeroMemory(szData, 1); dwKeyDataType = 0; dwDataBufSize = 256; break; } } else { break; } } ::RegCloseKey(hKey); } |