1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
| /////////////////////////////////////////////////////////////////////////////
// My access to the registry
// Write a string
bool CApp::SetRegString(CString path,CString field,CString Val)
{
HKEY subKey;
int err;
if(err=::RegOpenKeyEx(HKEY_CURRENT_USER,(LPCTSTR)path,0,KEY_WRITE,&subKey))
{
RegistryAccessError(err);
return false;
}
if(err=::RegSetValueEx(subKey,field,0,REG_SZ,(const unsigned char *)(LPCTSTR)Val,(Val.GetLength()+1)*sizeof(TCHAR)))
{
RegistryAccessError(err);
return false;
}
if(err=::RegCloseKey(subKey))
{
RegistryAccessError(err);
return false;
}
return true;
}
// Write an Integer
bool CApp::SetRegInt(CString path,CString field,int Val)
{
HKEY subKey;
int err;
if(err=::RegOpenKeyEx(HKEY_CURRENT_USER,(LPCTSTR)path,0,KEY_WRITE,&subKey))
{
RegistryAccessError(err);
return false;
}
if(err=::RegSetValueEx(subKey,field,0,REG_DWORD,(const unsigned char *)&Val,sizeof(REG_DWORD)))
{
RegistryAccessError(err);
return false;
}
if(err=::RegCloseKey(subKey))
{
RegistryAccessError(err);
return false;
}
return true;
}
// Read a string
CString CApp::GetRegString(CString path,CString field,CString defVal)
{
HKEY subKey;
TCHAR data[256];
DWORD Size=sizeof(data);
memset(data,0,Size/sizeof(TCHAR));
int err;
if(err=::RegOpenKeyEx(HKEY_CURRENT_USER,(LPCTSTR)path,0,KEY_READ,&subKey))
{
RegistryAccessError(err);
return defVal;
}
if(err=::RegQueryValueEx(subKey,field,0,NULL,(unsigned char *)data,&Size))
{
RegistryAccessError(err);
return defVal;
}
if(err=::RegCloseKey(subKey))
{
RegistryAccessError(err);
return defVal;
}
return data;
}
// Read an Integer
int CApp::GetRegInt(CString path,CString field,int defVal)
{
HKEY subKey;
TCHAR data[256];
DWORD Size=sizeof(data);
memset(data,0,Size);
int err;
if(err=::RegOpenKeyEx(HKEY_CURRENT_USER,(LPCTSTR)path,0,KEY_READ,&subKey))
{
RegistryAccessError(err);
return (defVal);
}
if(err=::RegQueryValueEx(subKey,field,0,NULL,(unsigned char *)data,&Size))
{
RegistryAccessError(err);
return (defVal);
}
if(err=::RegCloseKey(subKey))
{
RegistryAccessError(err);
return (defVal);
}
return (*(int*)data);
}
void CApp::RegistryAccessError(int err)
{
// To Display a error message
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
err,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
);
// Process any inserts in lpMsgBuf.
// ...
// Display the string.
MessageBox( NULL, (LPCTSTR)lpMsgBuf, _T("Error"), MB_OK | MB_ICONINFORMATION );
// Free the buffer.
LocalFree( lpMsgBuf );
} |
Partager