mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
Registry Measure: Mattking fixed a problem where a skin reading a registry value would never update the value in the skin if the key did not exist when the key was loaded, but added while the skin was running. It also would not detect that a key it had successfully read when the skin was loaded was deleted while the skin was running.
This commit is contained in:
parent
6aedff8fc5
commit
11dfcb95b1
@ -53,48 +53,58 @@ CMeasureRegistry::~CMeasureRegistry()
|
||||
*/
|
||||
bool CMeasureRegistry::Update()
|
||||
{
|
||||
if (!CMeasure::PreUpdate()) return false;
|
||||
if (!CMeasure::PreUpdate()) return false;
|
||||
|
||||
if(m_RegKey != NULL)
|
||||
{
|
||||
DWORD size = 4096;
|
||||
WCHAR data[4096];
|
||||
DWORD type = 0;
|
||||
if(m_RegKey != NULL)
|
||||
{
|
||||
DWORD size = 4096;
|
||||
WCHAR data[4096];
|
||||
DWORD type = 0;
|
||||
|
||||
if(RegQueryValueEx(m_RegKey,
|
||||
m_RegValueName.c_str(),
|
||||
NULL,
|
||||
(LPDWORD)&type,
|
||||
(LPBYTE)&data,
|
||||
(LPDWORD)&size) == ERROR_SUCCESS)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case REG_DWORD:
|
||||
m_Value = *((LPDWORD)&data);
|
||||
m_StringValue.erase();
|
||||
break;
|
||||
if(RegQueryValueEx(m_RegKey,
|
||||
m_RegValueName.c_str(),
|
||||
NULL,
|
||||
(LPDWORD)&type,
|
||||
(LPBYTE)&data,
|
||||
(LPDWORD)&size) == ERROR_SUCCESS)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case REG_DWORD:
|
||||
m_Value = *((LPDWORD)&data);
|
||||
m_StringValue.erase();
|
||||
break;
|
||||
|
||||
case REG_SZ:
|
||||
case REG_EXPAND_SZ:
|
||||
case REG_MULTI_SZ:
|
||||
m_Value = 0.0;
|
||||
m_StringValue = data;
|
||||
break;
|
||||
case REG_SZ:
|
||||
case REG_EXPAND_SZ:
|
||||
case REG_MULTI_SZ:
|
||||
m_Value = 0.0;
|
||||
m_StringValue = data;
|
||||
break;
|
||||
|
||||
case REG_QWORD:
|
||||
m_Value = (double)((LARGE_INTEGER*)&data)->QuadPart;
|
||||
m_StringValue.erase();
|
||||
break;
|
||||
case REG_QWORD:
|
||||
m_Value = (double)((LARGE_INTEGER*)&data)->QuadPart;
|
||||
m_StringValue.erase();
|
||||
break;
|
||||
|
||||
default: // Other types are not supported
|
||||
m_Value = 0.0;
|
||||
m_StringValue.erase();
|
||||
}
|
||||
}
|
||||
}
|
||||
default: // Other types are not supported
|
||||
m_Value = 0.0;
|
||||
m_StringValue.erase();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_Value = 0.0;
|
||||
m_StringValue.erase();
|
||||
RegOpenKeyEx(m_HKey, m_RegKeyName.c_str(), 0, KEY_READ, &m_RegKey);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
RegOpenKeyEx(m_HKey, m_RegKeyName.c_str(), 0, KEY_READ, &m_RegKey);
|
||||
}
|
||||
|
||||
return PostUpdate();
|
||||
return PostUpdate();
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user