3 #include "registry.hpp"
5 QVLCRegistry::QVLCRegistry(HKEY rootKey)
7 this->m_RootKey = rootKey;
10 QVLCRegistry::~QVLCRegistry(void)
14 int QVLCRegistry::RegistryKeyExists(char *path) {
16 if( RegOpenKeyEx(m_RootKey, path, 0, KEY_READ, &keyHandle) == ERROR_SUCCESS) {
17 RegCloseKey(keyHandle);
23 int QVLCRegistry::RegistryValueExists(char *path, char *valueName) {
29 if( RegOpenKeyEx(m_RootKey, path, 0, KEY_READ, &keyHandle) == ERROR_SUCCESS) {
30 if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, NULL, &size1) == ERROR_SUCCESS) {
33 RegCloseKey(keyHandle);
38 void QVLCRegistry::WriteRegistryInt(char *path, char *valueName, int value) {
41 if( RegCreateKeyEx(m_RootKey, path, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &keyHandle, NULL) == ERROR_SUCCESS) {
42 RegSetValueEx(keyHandle,valueName,0,REG_DWORD,(LPBYTE)&value,sizeof(int));
43 RegCloseKey(keyHandle);
48 void QVLCRegistry::WriteRegistryString(char *path, char *valueName, char *value) {
51 if( RegCreateKeyEx(m_RootKey, path, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &keyHandle, NULL) == ERROR_SUCCESS) {
52 RegSetValueEx(keyHandle,valueName,0,REG_SZ,(LPBYTE)value,(DWORD)(strlen(value)+1));
53 RegCloseKey(keyHandle);
57 void QVLCRegistry::WriteRegistryDouble(char *path, char *valueName, double value) {
59 if( RegCreateKeyEx(m_RootKey, path, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &keyHandle, NULL) == ERROR_SUCCESS) {
60 RegSetValueEx(keyHandle,valueName,0,REG_BINARY,(LPBYTE)&value,sizeof(double));
61 RegCloseKey(keyHandle);
65 int QVLCRegistry::ReadRegistryInt(char *path, char *valueName, int default_value) {
71 if( RegOpenKeyEx(m_RootKey, path, 0, KEY_READ, &keyHandle) == ERROR_SUCCESS) {
72 if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, NULL, &size1) == ERROR_SUCCESS) {
73 if(valueType == REG_DWORD) {
74 if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, (LPBYTE)&tempValue, &size1) == ERROR_SUCCESS) {
75 default_value = tempValue;
79 RegCloseKey(keyHandle);
84 char * QVLCRegistry::ReadRegistryString(char *path, char *valueName, char *default_value) {
86 char *tempValue = NULL;
90 if( RegOpenKeyEx(m_RootKey, path, 0, KEY_READ, &keyHandle) == ERROR_SUCCESS) {
91 if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, NULL, &size1) == ERROR_SUCCESS) {
92 if(valueType == REG_SZ) {
94 tempValue = (char *)malloc(size1+1); // +1 für NullByte`?
95 if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, (LPBYTE)tempValue, &size1) == ERROR_SUCCESS) {
96 default_value = tempValue;
100 RegCloseKey(keyHandle);
102 if(tempValue == NULL) {
103 // wenn tempValue nicht aus registry gelesen wurde dafür sorgen das ein neuer String mit der Kopie von DefaultValue
104 // geliefert wird - das macht das Handling des Rückgabewertes der Funktion einfacher - immer schön mit free freigeben!
105 default_value = strdup(default_value);
108 return default_value;
111 double QVLCRegistry::ReadRegistryDouble(char *path, char *valueName, double default_value) {
117 if( RegOpenKeyEx(m_RootKey, path, 0, KEY_READ, &keyHandle) == ERROR_SUCCESS) {
118 if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, NULL, &size1) == ERROR_SUCCESS) {
119 if((valueType == REG_BINARY) && (size1 == sizeof(double))) {
120 if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, (LPBYTE)&tempValue, &size1) == ERROR_SUCCESS) {
121 default_value = tempValue;
125 RegCloseKey(keyHandle);
127 return default_value;