fixed changing of string values (now it works)

svn path=/trunk/; revision=7392
This commit is contained in:
Thomas Bluemel
2004-01-01 17:29:05 +00:00
parent a2ef615d16
commit df212d0711
3 changed files with 65 additions and 49 deletions
+3 -1
View File
@@ -122,7 +122,7 @@ BOOL ModifyValue(HWND hwnd, HKEY hKey, LPCTSTR valueName)
LONG lRet;
BOOL result = FALSE;
if (!hKey || !valueName) return FALSE;
if (!hKey) return FALSE;
editValueName = valueName;
@@ -159,7 +159,9 @@ BOOL ModifyValue(HWND hwnd, HKEY hKey, LPCTSTR valueName)
}
if (DialogBox(0, MAKEINTRESOURCE(IDD_EDIT_STRING), hwnd, modify_string_dlgproc) == IDOK) {
if(stringValueData)
{MessageBox(0, stringValueData, valueName, 0);
lRet = RegSetValueEx(hKey, valueName, 0, type, stringValueData, lstrlen(stringValueData) + 1);
}
else
lRet = RegSetValueEx(hKey, valueName, 0, type, NULL, 0);
if (lRet == ERROR_SUCCESS) result = TRUE;
+39 -30
View File
@@ -439,31 +439,50 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
LPCTSTR keyPath;
LPCTSTR valueName;
BOOL result = TRUE;
REGSAM regsam = KEY_READ;
LONG lRet;
switch (LOWORD(wParam)) {
case ID_REGISTRY_IMPORTREGISTRYFILE:
ImportRegistryFile(hWnd);
return TRUE;
case ID_REGISTRY_EXPORTREGISTRYFILE:
ExportRegistryFile(hWnd);
return TRUE;
case ID_REGISTRY_CONNECTNETWORKREGISTRY:
return TRUE;
case ID_REGISTRY_DISCONNECTNETWORKREGISTRY:
return TRUE;
case ID_REGISTRY_PRINT:
PrintRegistryHive(hWnd, _T(""));
return TRUE;
case ID_REGISTRY_EXIT:
DestroyWindow(hWnd);
return TRUE;
case ID_VIEW_STATUSBAR:
toggle_child(hWnd, LOWORD(wParam), hStatusBar);
return TRUE;
case ID_HELP_HELPTOPICS:
WinHelp(hWnd, _T("regedit"), HELP_FINDER, 0);
return TRUE;
case ID_HELP_ABOUT:
ShowAboutBox(hWnd);
return TRUE;
case ID_EDIT_MODIFY:
regsam |= KEY_WRITE;
break;
}
keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
valueName = GetValueName(g_pChildWnd->hListWnd);
if (keyPath) {
lRet = RegOpenKeyEx(hKeyRoot, keyPath, 0, KEY_READ, &hKey);
lRet = RegOpenKeyEx(hKeyRoot, keyPath, 0, regsam, &hKey);
if (lRet != ERROR_SUCCESS) hKey = 0;
}
switch (LOWORD(wParam)) {
case ID_REGISTRY_IMPORTREGISTRYFILE:
ImportRegistryFile(hWnd);
break;
case ID_REGISTRY_EXPORTREGISTRYFILE:
ExportRegistryFile(hWnd);
break;
case ID_REGISTRY_CONNECTNETWORKREGISTRY:
break;
case ID_REGISTRY_DISCONNECTNETWORKREGISTRY:
break;
case ID_REGISTRY_PRINT:
PrintRegistryHive(hWnd, _T(""));
break;
switch (LOWORD(wParam)) {
case ID_EDIT_MODIFY:
if (ModifyValue(hWnd, hKey, valueName))
if (valueName && ModifyValue(hWnd, hKey, valueName))
RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath);
break;
case ID_EDIT_COPYKEYNAME:
@@ -477,29 +496,19 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
break;
case ID_REGISTRY_OPENLOCAL:
break;
case ID_REGISTRY_EXIT:
DestroyWindow(hWnd);
break;
case ID_VIEW_REFRESH:
RefreshView(hWnd);
break;
/*case ID_OPTIONS_TOOLBAR:*/
/* toggle_child(hWnd, LOWORD(wParam), hToolBar);*/
/* break;*/
case ID_VIEW_STATUSBAR:
toggle_child(hWnd, LOWORD(wParam), hStatusBar);
break;
case ID_HELP_HELPTOPICS:
WinHelp(hWnd, _T("regedit"), HELP_FINDER, 0);
break;
case ID_HELP_ABOUT:
ShowAboutBox(hWnd);
break;
default:
result = FALSE;
}
RegCloseKey(hKey);
if(hKey)
RegCloseKey(hKey);
return result;
}
+23 -18
View File
@@ -69,26 +69,31 @@ LPCTSTR GetValueName(HWND hwndLV)
maxLen = HeapSize(GetProcessHeap(), 0, g_valueName);
if (maxLen == (SIZE_T) - 1) return NULL;
item = ListView_GetNextItem(hwndLV, -1, LVNI_FOCUSED);
item = ListView_GetNextItem(hwndLV, -1, LVNI_FOCUSED | LVNI_SELECTED);
if (item == -1) return NULL;
do {
LVItem.mask = LVIF_PARAM;
LVItem.iItem = item;
if(ListView_GetItem(hwndLV, &LVItem))
LVItem.mask = LVIF_PARAM;
LVItem.iItem = item;
for(;;)
{
if(ListView_GetItem(hwndLV, &LVItem))
{
lineinfo = (PLINE_INFO)LVItem.lParam;
if(!lineinfo->name)
{
lineinfo = (PLINE_INFO)LVItem.lParam;
g_valueName = lineinfo->name;
len = _tcslen(g_valueName);
if (len < maxLen - 1) break;
newStr = HeapReAlloc(GetProcessHeap(), 0, g_valueName, maxLen * 2);
if (!newStr) return NULL;
g_valueName = newStr;
maxLen *= 2;
}
else
break;
} while (TRUE);
*g_valueName = 0;
return g_valueName;
}
len = _tcslen(lineinfo->name);
if (len < maxLen - 1) break;
newStr = HeapReAlloc(GetProcessHeap(), 0, g_valueName, maxLen * 2);
if (!newStr) return NULL;
g_valueName = newStr;
maxLen *= 2;
}
else
return NULL;
}
memcpy(g_valueName, lineinfo->name, sizeof(TCHAR) * (len + 1));
return g_valueName;
}