ReactOS 0.4.15-dev-7907-g95bf896
framewnd.c
Go to the documentation of this file.
1/*
2 * Regedit frame window
3 *
4 * Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#include "regedit.h"
22
23#include <commdlg.h>
24#include <cderr.h>
25#include <objsel.h>
26
27/********************************************************************************
28 * Global and Local Variables:
29 */
30
31#define FAVORITES_MENU_POSITION 3
32
33static WCHAR s_szFavoritesRegKey[] = L"Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\\Favorites";
34
35static BOOL bInMenuLoop = FALSE; /* Tells us if we are in the menu loop */
36
37extern WCHAR Suggestions[256];
38/*******************************************************************************
39 * Local module support methods
40 */
41
42static void resize_frame_rect(HWND hWnd, PRECT prect)
43{
45 {
46 RECT rt;
47
50 prect->bottom -= rt.bottom - rt.top;
51 }
52 MoveWindow(g_pChildWnd->hWnd, prect->left, prect->top, prect->right, prect->bottom, TRUE);
53}
54
56{
57 RECT rect;
58
61}
62
63/********************************************************************************/
64
65static void OnInitMenu(HWND hWnd)
66{
67 LONG lResult;
68 HKEY hKey = NULL;
69 DWORD dwIndex, cbValueName, cbValueData, dwType;
70 WCHAR szValueName[256];
71 BYTE abValueData[256];
72 static int s_nFavoriteMenuSubPos = -1;
73 HMENU hMenu;
74 BOOL bDisplayedAny = FALSE;
75
76 /* Find Favorites menu and clear it out */
78 if (!hMenu)
79 goto done;
80 if (s_nFavoriteMenuSubPos < 0)
81 {
82 s_nFavoriteMenuSubPos = GetMenuItemCount(hMenu);
83 }
84 else
85 {
86 while(RemoveMenu(hMenu, s_nFavoriteMenuSubPos, MF_BYPOSITION)) ;
87 }
88
90 if (lResult != ERROR_SUCCESS)
91 goto done;
92
93 dwIndex = 0;
94 do
95 {
96 cbValueName = ARRAY_SIZE(szValueName);
97 cbValueData = sizeof(abValueData);
98 lResult = RegEnumValueW(hKey, dwIndex, szValueName, &cbValueName, NULL, &dwType, abValueData, &cbValueData);
99 if ((lResult == ERROR_SUCCESS) && (dwType == REG_SZ))
100 {
101 if (!bDisplayedAny)
102 {
103 AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
104 bDisplayedAny = TRUE;
105 }
106 AppendMenu(hMenu, 0, ID_FAVORITES_MIN + GetMenuItemCount(hMenu), szValueName);
107 }
108 dwIndex++;
109 }
110 while(lResult == ERROR_SUCCESS);
111
112done:
113 if (hKey)
115}
116
118{
119 int nParts;
121
122 /* Update the status bar pane sizes */
123 nParts = -1;
127}
128
130{
132 /* Update the status bar pane sizes*/
135}
136
137static void OnMenuSelect(HWND hWnd, UINT nItemID, UINT nFlags, HMENU hSysMenu)
138{
139 WCHAR str[100];
140
141 str[0] = UNICODE_NULL;
142 if (nFlags & MF_POPUP)
143 {
144 if (hSysMenu != GetMenu(hWnd))
145 {
146 if (nItemID == 2) nItemID = 5;
147 }
148 }
149 if (LoadStringW(hInst, nItemID, str, 100))
150 {
151 /* load appropriate string*/
152 LPWSTR lpsz = str;
153 /* first newline terminates actual string*/
154 lpsz = wcschr(lpsz, L'\n');
155 if (lpsz != NULL)
156 *lpsz = L'\0';
157 }
159}
160
162{
163 RECT rc;
164 int nParts;
165 GetClientRect(hWnd, &rc);
166 nParts = rc.right;
167 /* nParts = -1;*/
168 if (bResize)
171}
172
174{
175 HKEY hKeyRoot;
176 LPCWSTR pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
177
178 SendMessageW(hStatusBar, SB_SETTEXTW, 0, (LPARAM)pszKeyPath);
179}
180
181static void toggle_child(HWND hWnd, UINT cmd, HWND hchild)
182{
183 BOOL vis = IsWindowVisible(hchild);
185
187 ShowWindow(hchild, vis?SW_HIDE:SW_SHOW);
189}
190
192{
193 DWORD dwErrorCode = CommDlgExtendedError();
195 switch (dwErrorCode)
196 {
198 break;
200 break;
202 break;
204 break;
205 case CDERR_NOHOOK:
206 break;
208 break;
209 case CDERR_NOTEMPLATE:
210 break;
212 break;
213 case CDERR_STRUCTSIZE:
214 break;
216 break;
218 break;
220 break;
222 break;
224 break;
226 break;
227 default:
228 break;
229 }
230 return TRUE;
231}
232
234
235typedef struct
236{
240
241void
243{
244 int i, c;
245
246 c = 0;
247 for(i = 0; i < PairCount; i++)
248 {
249 c += LoadStringW(hInst, Pairs[i].DisplayID, &Filter[c], 255);
250 Filter[++c] = L'\0';
251 c += LoadStringW(hInst, Pairs[i].FilterID, &Filter[c], 255);
252 Filter[++c] = L'\0';
253 }
254 Filter[++c] = L'\0';
255}
256
258{
259 FILTERPAIR FilterPairs[5];
260 static WCHAR Filter[1024];
261
262 memset(pofn, 0, sizeof(OPENFILENAME));
263 pofn->lStructSize = sizeof(OPENFILENAME);
264 pofn->hwndOwner = hWnd;
265 pofn->hInstance = hInst;
266
267 /* create filter string */
268 FilterPairs[0].DisplayID = IDS_FLT_REGFILES;
269 FilterPairs[0].FilterID = IDS_FLT_REGFILES_FLT;
270 FilterPairs[1].DisplayID = IDS_FLT_HIVFILES;
271 FilterPairs[1].FilterID = IDS_FLT_HIVFILES_FLT;
272 FilterPairs[2].DisplayID = IDS_FLT_REGEDIT4;
273 FilterPairs[2].FilterID = IDS_FLT_REGEDIT4_FLT;
274 if (bSave)
275 {
276 FilterPairs[3].DisplayID = IDS_FLT_TXTFILES;
277 FilterPairs[3].FilterID = IDS_FLT_TXTFILES_FLT;
278 FilterPairs[4].DisplayID = IDS_FLT_ALLFILES;
279 FilterPairs[4].FilterID = IDS_FLT_ALLFILES_FLT;
280 }
281 else
282 {
283 FilterPairs[3].DisplayID = IDS_FLT_ALLFILES;
284 FilterPairs[3].FilterID = IDS_FLT_ALLFILES_FLT;
285 }
286
287 BuildFilterStrings(Filter, FilterPairs, ARRAY_SIZE(FilterPairs) - !bSave);
288
289 pofn->lpstrFilter = Filter;
293 pofn->lpstrDefExt = L"reg";
294 if (bSave)
296 else
297 pofn->Flags |= OFN_FILEMUSTEXIST;
298
299 return TRUE;
300}
301
302#define LOADHIVE_KEYNAMELENGTH 128
303
305{
306 static LPWSTR sKey = NULL;
307 switch(uMsg)
308 {
309 case WM_INITDIALOG:
310 sKey = (LPWSTR)lParam;
311 break;
312 case WM_COMMAND:
313 switch(LOWORD(wParam))
314 {
315 case IDOK:
317 return EndDialog(hWndDlg, -1);
318 else
319 return EndDialog(hWndDlg, 0);
320 case IDCANCEL:
321 return EndDialog(hWndDlg, 0);
322 }
323 break;
324 }
325 return FALSE;
326}
327
328static BOOL EnablePrivilege(LPCWSTR lpszPrivilegeName, LPCWSTR lpszSystemName, BOOL bEnablePrivilege)
329{
330 BOOL bRet = FALSE;
331 HANDLE hToken = NULL;
332
335 &hToken))
336 {
338
339 tp.PrivilegeCount = 1;
340 tp.Privileges[0].Attributes = (bEnablePrivilege ? SE_PRIVILEGE_ENABLED : 0);
341
342 if (LookupPrivilegeValueW(lpszSystemName,
343 lpszPrivilegeName,
344 &tp.Privileges[0].Luid))
345 {
346 bRet = AdjustTokenPrivileges(hToken, FALSE, &tp, 0, NULL, NULL);
347
349 bRet = FALSE;
350 }
351
352 CloseHandle(hToken);
353 }
354
355 return bRet;
356}
357
359{
361 WCHAR Caption[128];
362 LPCWSTR pszKeyPath;
364 HKEY hRootKey;
365 WCHAR Filter[1024];
367 /* get the item key to load the hive in */
368 pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hRootKey);
369 /* initialize the "open file" dialog */
371 /* build the "All Files" filter up */
372 filter.DisplayID = IDS_FLT_ALLFILES;
373 filter.FilterID = IDS_FLT_ALLFILES_FLT;
376 /* load and set the caption and flags for dialog */
377 LoadStringW(hInst, IDS_LOAD_HIVE, Caption, ARRAY_SIZE(Caption));
378 ofn.lpstrTitle = Caption;
380
381 /* now load the hive */
382 if (GetOpenFileName(&ofn))
383 {
386 {
387 LONG regLoadResult;
388
389 /* Enable the 'restore' privilege, load the hive, disable the privilege */
391 regLoadResult = RegLoadKeyW(hRootKey, xPath, ofn.lpstrFile);
393
394 if(regLoadResult == ERROR_SUCCESS)
395 {
396 /* refresh tree and list views */
398 pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hRootKey);
399 RefreshListView(g_pChildWnd->hListWnd, hRootKey, pszKeyPath, TRUE);
400 }
401 else
402 {
403 ErrorMessageBox(hWnd, Caption, regLoadResult);
404 return FALSE;
405 }
406 }
407 }
408 else
409 {
411 }
412 return TRUE;
413}
414
416{
417 WCHAR Caption[128];
418 LPCWSTR pszKeyPath;
419 HKEY hRootKey;
420 LONG regUnloadResult;
421
422 /* get the item key to unload */
423 pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hRootKey);
424 /* load and set the caption and flags for dialog */
425 LoadStringW(hInst, IDS_UNLOAD_HIVE, Caption, ARRAY_SIZE(Caption));
426
427 /* Enable the 'restore' privilege, unload the hive, disable the privilege */
429 regUnloadResult = RegUnLoadKeyW(hRootKey, pszKeyPath);
431
432 if(regUnloadResult == ERROR_SUCCESS)
433 {
434 /* refresh tree and list views */
436 pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hRootKey);
437 RefreshListView(g_pChildWnd->hListWnd, hRootKey, pszKeyPath, TRUE);
438 }
439 else
440 {
441 ErrorMessageBox(hWnd, Caption, regUnloadResult);
442 return FALSE;
443 }
444 return TRUE;
445}
446
448{
449 BOOL bRet = FALSE;
451 WCHAR Caption[128], szTitle[512], szText[512];
452 HKEY hKeyRoot;
453 LPCWSTR pszKeyPath;
454
455 /* Figure out in which key path we are importing */
456 pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
457
459 LoadStringW(hInst, IDS_IMPORT_REG_FILE, Caption, ARRAY_SIZE(Caption));
460 ofn.lpstrTitle = Caption;
462
463 if (GetOpenFileName(&ofn))
464 {
465 /* Look at the extension of the file to determine its type */
466 if (ofn.nFileExtension >= 1 &&
467 _wcsicmp(ofn.lpstrFile + ofn.nFileExtension, L"reg") == 0) /* REGEDIT4 or Windows Registry Editor Version 5.00 */
468 {
469 /* Open the file */
470 FILE* fp = _wfopen(ofn.lpstrFile, L"rb");
471
472 /* Import it */
473 if (fp == NULL || !import_registry_file(fp))
474 {
475 /* Error opening the file */
477 LoadStringW(hInst, IDS_IMPORT_ERROR, szText, ARRAY_SIZE(szText));
479 bRet = FALSE;
480 }
481 else
482 {
483 /* Show successful import */
485 LoadStringW(hInst, IDS_IMPORT_OK, szText, ARRAY_SIZE(szText));
487 bRet = TRUE;
488 }
489
490 /* Close the file */
491 if (fp) fclose(fp);
492 }
493 else /* Registry Hive Files */
494 {
497
498 /* Display a confirmation message */
500 {
501 LONG lResult;
502 HKEY hSubKey;
503
504 /* Open the subkey */
505 lResult = RegOpenKeyExW(hKeyRoot, pszKeyPath, 0, KEY_WRITE, &hSubKey);
506 if (lResult == ERROR_SUCCESS)
507 {
508 /* Enable the 'restore' privilege, restore the hive then disable the privilege */
510 lResult = RegRestoreKey(hSubKey, ofn.lpstrFile, REG_FORCE_RESTORE);
512
513 /* Flush the subkey and close it */
514 RegFlushKey(hSubKey);
515 RegCloseKey(hSubKey);
516 }
517
518 /* Set the return value */
519 bRet = (lResult == ERROR_SUCCESS);
520
521 /* Display error, if any */
522 if (!bRet) ErrorMessageBox(hWnd, Caption, lResult);
523 }
524 }
525 }
526 else
527 {
529 }
530
531 /* refresh tree and list views */
533 pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
534 RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, pszKeyPath, TRUE);
535
536 return bRet;
537}
538
540{
541 HWND hwndExportAll;
542 HWND hwndExportBranch;
543 HWND hwndExportBranchText;
544 UINT_PTR iResult = 0;
545 OPENFILENAME *pOfn;
546 LPWSTR pszSelectedKey;
547 OFNOTIFY *pOfnNotify;
548
550
551 switch(uiMsg)
552 {
553 case WM_INITDIALOG:
554 pOfn = (OPENFILENAME *) lParam;
555 pszSelectedKey = (LPWSTR) pOfn->lCustData;
556
557 hwndExportAll = GetDlgItem(hdlg, IDC_EXPORT_ALL);
558 if (hwndExportAll)
559 SendMessageW(hwndExportAll, BM_SETCHECK, pszSelectedKey ? BST_UNCHECKED : BST_CHECKED, 0);
560
561 hwndExportBranch = GetDlgItem(hdlg, IDC_EXPORT_BRANCH);
562 if (hwndExportBranch)
563 SendMessageW(hwndExportBranch, BM_SETCHECK, pszSelectedKey ? BST_CHECKED : BST_UNCHECKED, 0);
564
565 hwndExportBranchText = GetDlgItem(hdlg, IDC_EXPORT_BRANCH_TEXT);
566 if (hwndExportBranchText)
567 SetWindowTextW(hwndExportBranchText, pszSelectedKey);
568 break;
569
570 case WM_NOTIFY:
571 if (((NMHDR *) lParam)->code == CDN_FILEOK)
572 {
573 pOfnNotify = (OFNOTIFY *) lParam;
574 pszSelectedKey = (LPWSTR) pOfnNotify->lpOFN->lCustData;
575
576 hwndExportBranch = GetDlgItem(hdlg, IDC_EXPORT_BRANCH);
577 hwndExportBranchText = GetDlgItem(hdlg, IDC_EXPORT_BRANCH_TEXT);
578 if (hwndExportBranch && hwndExportBranchText
579 && (SendMessageW(hwndExportBranch, BM_GETCHECK, 0, 0) == BST_CHECKED))
580 {
581 GetWindowTextW(hwndExportBranchText, pszSelectedKey, _MAX_PATH);
582 }
583 else if (pszSelectedKey)
584 {
585 pszSelectedKey[0] = L'\0';
586 }
587 }
588 break;
589 }
590 return iResult;
591}
592
594{
595 BOOL bRet = FALSE;
597 WCHAR ExportKeyPath[_MAX_PATH] = {0};
598 WCHAR Caption[128], szTitle[512], szText[512];
599 HKEY hKeyRoot;
600 LPCWSTR pszKeyPath;
601
602 /* Figure out which key path we are exporting */
603 pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
604 GetKeyName(ExportKeyPath, ARRAY_SIZE(ExportKeyPath), hKeyRoot, pszKeyPath);
605
607 LoadStringW(hInst, IDS_EXPORT_REG_FILE, Caption, ARRAY_SIZE(Caption));
608 ofn.lpstrTitle = Caption;
609
610 /* Only set the path if a key (not the root node) is selected */
611 if (hKeyRoot != 0)
612 {
613 ofn.lCustData = (LPARAM) ExportKeyPath;
614 }
618 if (GetSaveFileName(&ofn))
619 {
620 switch (ofn.nFilterIndex)
621 {
622 case 2: /* Registry Hive Files */
623 {
624 LONG lResult;
625 HKEY hSubKey;
626
627 /* Open the subkey */
628 lResult = RegOpenKeyExW(hKeyRoot, pszKeyPath, 0, KEY_READ, &hSubKey);
629 if (lResult == ERROR_SUCCESS)
630 {
631 /* Enable the 'backup' privilege, save the hive then disable the privilege */
633 lResult = RegSaveKeyW(hSubKey, ofn.lpstrFile, NULL);
634 if (lResult == ERROR_ALREADY_EXISTS)
635 {
636 /*
637 * We are here, that means that we already said "yes" to the confirmation dialog.
638 * So we absolutely want to replace the hive file.
639 */
641 {
642 /* Try again */
643 lResult = RegSaveKeyW(hSubKey, ofn.lpstrFile, NULL);
644 }
645 }
647
648 if (lResult != ERROR_SUCCESS)
649 {
650 /*
651 * If we are here, it's because RegSaveKeyW has failed for any reason.
652 * The problem is that even if it has failed, it has created or
653 * replaced the exported hive file with a new empty file. We don't
654 * want to keep this file, so we delete it.
655 */
657 }
658
659 /* Close the subkey */
660 RegCloseKey(hSubKey);
661 }
662
663 /* Set the return value */
664 bRet = (lResult == ERROR_SUCCESS);
665
666 /* Display error, if any */
667 if (!bRet) ErrorMessageBox(hWnd, Caption, lResult);
668
669 break;
670 }
671
672 case 1: /* Windows Registry Editor Version 5.00 */
673 case 3: /* REGEDIT4 */
674 default: /* All files ==> use Windows Registry Editor Version 5.00 */
675 {
676 if (!export_registry_key(ofn.lpstrFile, ExportKeyPath,
678 : REG_FORMAT_5)))
679 {
680 /* Error creating the file */
682 LoadStringW(hInst, IDS_EXPORT_ERROR, szText, ARRAY_SIZE(szText));
684 bRet = FALSE;
685 }
686 else
687 {
688 bRet = TRUE;
689 }
690
691 break;
692 }
693
694 case 4: /* Text File */
695 {
696 bRet = txt_export_registry_key(ofn.lpstrFile, ExportKeyPath);
697 if (!bRet)
698 {
699 /* Error creating the file */
701 LoadStringW(hInst, IDS_EXPORT_ERROR, szText, ARRAY_SIZE(szText));
703 }
704 break;
705 }
706 }
707 }
708 else
709 {
711 }
712
713 return bRet;
714}
715
717{
718#if 1
719 PRINTDLG pd;
721
722 ZeroMemory(&pd, sizeof(PRINTDLG));
723 pd.lStructSize = sizeof(PRINTDLG);
724 pd.hwndOwner = hWnd;
725 pd.hDevMode = NULL; /* Don't forget to free or store hDevMode*/
726 pd.hDevNames = NULL; /* Don't forget to free or store hDevNames*/
728 pd.nCopies = 1;
729 pd.nFromPage = 0xFFFF;
730 pd.nToPage = 0xFFFF;
731 pd.nMinPage = 1;
732 pd.nMaxPage = 0xFFFF;
733 if (PrintDlg(&pd))
734 {
735 /* GDI calls to render output. */
736 DeleteDC(pd.hDC); /* Delete DC when done.*/
737 }
738#else
739 HRESULT hResult;
740 PRINTDLGEX pd;
741
742 hResult = PrintDlgEx(&pd);
743 if (hResult == S_OK)
744 {
745 switch (pd.dwResultAction)
746 {
747 case PD_RESULT_APPLY:
748 /*The user clicked the Apply button and later clicked the Cancel button. This indicates that the user wants to apply the changes made in the property sheet, but does not yet want to print. The PRINTDLGEX structure contains the information specified by the user at the time the Apply button was clicked. */
749 break;
750 case PD_RESULT_CANCEL:
751 /*The user clicked the Cancel button. The information in the PRINTDLGEX structure is unchanged. */
752 break;
753 case PD_RESULT_PRINT:
754 /*The user clicked the Print button. The PRINTDLGEX structure contains the information specified by the user. */
755 break;
756 default:
757 break;
758 }
759 }
760 else
761 {
762 switch (hResult)
763 {
764 case E_OUTOFMEMORY:
765 /*Insufficient memory. */
766 break;
767 case E_INVALIDARG:
768 /* One or more arguments are invalid. */
769 break;
770 case E_POINTER:
771 /*Invalid pointer. */
772 break;
773 case E_HANDLE:
774 /*Invalid handle. */
775 break;
776 case E_FAIL:
777 /*Unspecified error. */
778 break;
779 default:
780 break;
781 }
782 return FALSE;
783 }
784#endif
785 return TRUE;
786}
787
788static void ChooseFavorite(LPCWSTR pszFavorite)
789{
790 HKEY hKey = NULL;
791 WCHAR szFavoritePath[512];
792 DWORD cbData, dwType;
793
795 goto done;
796
797 cbData = sizeof(szFavoritePath);
798 memset(szFavoritePath, 0, sizeof(szFavoritePath));
799 if (RegQueryValueExW(hKey, pszFavorite, NULL, &dwType, (LPBYTE) szFavoritePath, &cbData) != ERROR_SUCCESS)
800 goto done;
801
802 if (dwType == REG_SZ)
803 SelectNode(g_pChildWnd->hTreeWnd, szFavoritePath);
804
805done:
806 if (hKey)
808}
809
811{
812 BOOL bClipboardOpened = FALSE;
814 WCHAR szBuffer[512];
815 HGLOBAL hGlobal;
816 LPWSTR s;
817 SIZE_T cbGlobal;
818
819 if (!OpenClipboard(hWnd))
820 goto done;
821 bClipboardOpened = TRUE;
822
823 if (!EmptyClipboard())
824 goto done;
825
826 if (!GetKeyName(szBuffer, ARRAY_SIZE(szBuffer), hRootKey, keyName))
827 goto done;
828
829 cbGlobal = (wcslen(szBuffer) + 1) * sizeof(WCHAR);
830 hGlobal = GlobalAlloc(GMEM_MOVEABLE, cbGlobal);
831 if (!hGlobal)
832 goto done;
833
834 s = GlobalLock(hGlobal);
835 StringCbCopyW(s, cbGlobal, szBuffer);
836 GlobalUnlock(hGlobal);
837
839 bSuccess = TRUE;
840
841done:
842 if (bClipboardOpened)
844 return bSuccess;
845}
846
847static BOOL CreateNewValue(HKEY hRootKey, LPCWSTR pszKeyPath, DWORD dwType)
848{
849 WCHAR szNewValueFormat[128];
850 WCHAR szNewValue[128];
851 int iIndex = 1;
852 BYTE data[128];
853 DWORD dwExistingType, cbData;
854 LONG lResult;
855 HKEY hKey;
856 LVFINDINFO lvfi;
857
858 if (RegOpenKeyExW(hRootKey, pszKeyPath, 0, KEY_QUERY_VALUE | KEY_SET_VALUE,
859 &hKey) != ERROR_SUCCESS)
860 return FALSE;
861
862 LoadStringW(hInst, IDS_NEW_VALUE, szNewValueFormat, ARRAY_SIZE(szNewValueFormat));
863
864 do
865 {
866 wsprintf(szNewValue, szNewValueFormat, iIndex++);
867 cbData = sizeof(data);
868 lResult = RegQueryValueExW(hKey, szNewValue, NULL, &dwExistingType, data, &cbData);
869 }
870 while(lResult == ERROR_SUCCESS);
871
872 switch(dwType)
873 {
874 case REG_DWORD:
875 cbData = sizeof(DWORD);
876 break;
877 case REG_SZ:
878 case REG_EXPAND_SZ:
879 cbData = sizeof(WCHAR);
880 break;
881 case REG_MULTI_SZ:
882 /*
883 * WARNING: An empty multi-string has only one null char.
884 * Indeed, multi-strings are built in the following form:
885 * str1\0str2\0...strN\0\0
886 * where each strI\0 is a null-terminated string, and it
887 * ends with a terminating empty string.
888 * Therefore an empty multi-string contains only the terminating
889 * empty string, that is, one null char.
890 */
891 cbData = sizeof(WCHAR);
892 break;
893 case REG_QWORD: /* REG_QWORD_LITTLE_ENDIAN */
894 cbData = sizeof(DWORDLONG); // == sizeof(DWORD) * 2;
895 break;
896 default:
897 cbData = 0;
898 break;
899 }
900 memset(data, 0, cbData);
901 lResult = RegSetValueExW(hKey, szNewValue, 0, dwType, data, cbData);
903 if (lResult != ERROR_SUCCESS)
904 {
905 return FALSE;
906 }
907
908 RefreshListView(g_pChildWnd->hListWnd, hRootKey, pszKeyPath, TRUE);
909
910 /* locate the newly added value, and get ready to rename it */
911 memset(&lvfi, 0, sizeof(lvfi));
912 lvfi.flags = LVFI_STRING;
913 lvfi.psz = szNewValue;
914 iIndex = ListView_FindItem(g_pChildWnd->hListWnd, -1, &lvfi);
915 if (iIndex >= 0)
916 {
921 }
922
923 return TRUE;
924}
925
926static HRESULT
927InitializeRemoteRegistryPicker(OUT IDsObjectPicker **pDsObjectPicker)
928{
929 HRESULT hRet;
930
931 *pDsObjectPicker = NULL;
932
933 hRet = CoCreateInstance(&CLSID_DsObjectPicker,
934 NULL,
935 CLSCTX_INPROC_SERVER,
936 &IID_IDsObjectPicker,
937 (LPVOID*)pDsObjectPicker);
938 if (SUCCEEDED(hRet))
939 {
940 DSOP_INIT_INFO InitInfo;
941 static DSOP_SCOPE_INIT_INFO Scopes[] =
942 {
943 {
944 sizeof(DSOP_SCOPE_INIT_INFO),
949 0,
950 {
951 {
953 0,
954 0
955 },
957 },
958 NULL,
959 NULL,
960 S_OK
961 },
962 };
963
964 InitInfo.cbSize = sizeof(InitInfo);
965 InitInfo.pwzTargetComputer = NULL;
966 InitInfo.cDsScopeInfos = ARRAY_SIZE(Scopes);
967 InitInfo.aDsScopeInfos = Scopes;
968 InitInfo.flOptions = 0;
969 InitInfo.cAttributesToFetch = 0;
970 InitInfo.apwzAttributeNames = NULL;
971
972 hRet = (*pDsObjectPicker)->lpVtbl->Initialize(*pDsObjectPicker,
973 &InitInfo);
974
975 if (FAILED(hRet))
976 {
977 /* delete the object picker in case initialization failed! */
978 (*pDsObjectPicker)->lpVtbl->Release(*pDsObjectPicker);
979 }
980 }
981
982 return hRet;
983}
984
985static HRESULT
986InvokeRemoteRegistryPickerDialog(IN IDsObjectPicker *pDsObjectPicker,
989 IN UINT uSize)
990{
991 IDataObject *pdo = NULL;
992 HRESULT hRet;
993
994 hRet = pDsObjectPicker->lpVtbl->InvokeDialog(pDsObjectPicker,
996 &pdo);
997 if (hRet == S_OK)
998 {
999 STGMEDIUM stm;
1000 FORMATETC fe;
1001
1002 fe.cfFormat = (CLIPFORMAT) RegisterClipboardFormatW(CFSTR_DSOP_DS_SELECTION_LIST);
1003 fe.ptd = NULL;
1004 fe.dwAspect = DVASPECT_CONTENT;
1005 fe.lindex = -1;
1006 fe.tymed = TYMED_HGLOBAL;
1007
1008 hRet = pdo->lpVtbl->GetData(pdo,
1009 &fe,
1010 &stm);
1011 if (SUCCEEDED(hRet))
1012 {
1013 PDS_SELECTION_LIST SelectionList = (PDS_SELECTION_LIST)GlobalLock(stm.hGlobal);
1014 if (SelectionList != NULL)
1015 {
1016 if (SelectionList->cItems == 1)
1017 {
1018 size_t nlen = wcslen(SelectionList->aDsSelection[0].pwzName);
1019 if (nlen >= uSize)
1020 {
1021 nlen = uSize - 1;
1022 }
1023
1025 SelectionList->aDsSelection[0].pwzName,
1026 nlen * sizeof(WCHAR));
1027
1028 lpBuffer[nlen] = L'\0';
1029 }
1030
1031 GlobalUnlock(stm.hGlobal);
1032 }
1033
1034 ReleaseStgMedium(&stm);
1035 }
1036
1037 pdo->lpVtbl->Release(pdo);
1038 }
1039
1040 return hRet;
1041}
1042
1043static VOID
1044FreeObjectPicker(IN IDsObjectPicker *pDsObjectPicker)
1045{
1046 pDsObjectPicker->lpVtbl->Release(pDsObjectPicker);
1047}
1048
1049/*******************************************************************************
1050 *
1051 * FUNCTION: _CmdWndProc(HWND, unsigned, WORD, LONG)
1052 *
1053 * PURPOSE: Processes WM_COMMAND messages for the main frame window.
1054 *
1055 */
1057{
1058 HKEY hKeyRoot = 0, hKey = 0;
1059 LPCWSTR keyPath;
1060 LPCWSTR valueName;
1061 BOOL result = TRUE;
1062 REGSAM regsam = KEY_READ;
1063 int item;
1064
1067
1068 switch (LOWORD(wParam))
1069 {
1071 LoadHive(hWnd);
1072 return TRUE;
1075 return TRUE;
1078 return TRUE;
1081 return TRUE;
1083 {
1084 IDsObjectPicker *ObjectPicker;
1085 WCHAR szComputerName[MAX_COMPUTERNAME_LENGTH + 1];
1086 HRESULT hRet;
1087
1088 hRet = CoInitialize(NULL);
1089 if (SUCCEEDED(hRet))
1090 {
1091 hRet = InitializeRemoteRegistryPicker(&ObjectPicker);
1092 if (SUCCEEDED(hRet))
1093 {
1094 hRet = InvokeRemoteRegistryPickerDialog(ObjectPicker,
1095 hWnd,
1096 szComputerName,
1097 ARRAY_SIZE(szComputerName));
1098 if (hRet == S_OK)
1099 {
1100 /* FIXME - connect to the registry */
1101 }
1102
1103 FreeObjectPicker(ObjectPicker);
1104 }
1105
1107 }
1108
1109 return TRUE;
1110 }
1112 return TRUE;
1113 case ID_REGISTRY_PRINT:
1115 return TRUE;
1116 case ID_REGISTRY_EXIT:
1118 return TRUE;
1119 case ID_VIEW_STATUSBAR:
1121 return TRUE;
1122 case ID_HELP_HELPTOPICS:
1123 WinHelpW(hWnd, L"regedit", HELP_FINDER, 0);
1124 return TRUE;
1125 case ID_HELP_ABOUT:
1127 return TRUE;
1128 case ID_VIEW_SPLIT:
1129 {
1130 RECT rt;
1131 POINT pt, pts;
1133 pt.x = rt.left + g_pChildWnd->nSplitPos;
1134 pt.y = (rt.bottom / 2);
1135 pts = pt;
1136 if(ClientToScreen(g_pChildWnd->hWnd, &pts))
1137 {
1138 SetCursorPos(pts.x, pts.y);
1141 }
1142 return TRUE;
1143 }
1144 case ID_EDIT_RENAME:
1145 case ID_EDIT_MODIFY:
1146 case ID_EDIT_MODIFY_BIN:
1147 case ID_EDIT_DELETE:
1148 regsam |= KEY_WRITE;
1149 break;
1150 }
1151
1152 keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
1153 valueName = GetValueName(g_pChildWnd->hListWnd, -1);
1154 if (keyPath)
1155 {
1156 if (RegOpenKeyExW(hKeyRoot, keyPath, 0, regsam, &hKey) != ERROR_SUCCESS)
1157 hKey = 0;
1158 }
1159
1160 switch (LOWORD(wParam))
1161 {
1162 case ID_EDIT_MODIFY:
1163 if (valueName && ModifyValue(hWnd, hKey, valueName, FALSE))
1164 RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath, FALSE);
1165 break;
1166 case ID_EDIT_MODIFY_BIN:
1167 if (valueName && ModifyValue(hWnd, hKey, valueName, TRUE))
1168 RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath, FALSE);
1169 break;
1170 case ID_EDIT_RENAME:
1171 if (GetFocus() == g_pChildWnd->hListWnd)
1172 {
1174 {
1176 if(item > -1)
1177 {
1179 }
1180 }
1181 }
1182 else if (GetFocus() == g_pChildWnd->hTreeWnd)
1183 {
1184 /* Get focused entry of treeview (if any) */
1186 if (hItem != NULL)
1188 }
1189 break;
1190 case ID_EDIT_DELETE:
1191 {
1192 if (GetFocus() == g_pChildWnd->hListWnd && hKey)
1193 {
1195 if(nSelected >= 1)
1196 {
1197 WCHAR msg[128], caption[128];
1201 {
1202 int ni, errs;
1203
1204 item = -1;
1205 errs = 0;
1207 {
1208 valueName = GetValueName(g_pChildWnd->hListWnd, item);
1209 if(RegDeleteValueW(hKey, valueName) != ERROR_SUCCESS)
1210 {
1211 errs++;
1212 }
1213 item = ni;
1214 }
1215
1216 RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath, FALSE);
1217 if(errs > 0)
1218 {
1222 }
1223 }
1224 }
1225 }
1226 else if (GetFocus() == g_pChildWnd->hTreeWnd)
1227 {
1228 if (keyPath == NULL || *keyPath == UNICODE_NULL)
1229 {
1231 }
1232 else if (DeleteKey(hWnd, hKeyRoot, keyPath))
1233 {
1236 }
1237 }
1238 break;
1239 }
1241 CreateNewValue(hKeyRoot, keyPath, REG_SZ);
1242 break;
1244 CreateNewValue(hKeyRoot, keyPath, REG_BINARY);
1245 break;
1247 CreateNewValue(hKeyRoot, keyPath, REG_DWORD);
1248 break;
1250 CreateNewValue(hKeyRoot, keyPath, REG_MULTI_SZ);
1251 break;
1253 CreateNewValue(hKeyRoot, keyPath, REG_EXPAND_SZ);
1254 break;
1255 case ID_EDIT_FIND:
1257 break;
1258 case ID_EDIT_FINDNEXT:
1260 break;
1262 CopyKeyName(hWnd, hKeyRoot, keyPath);
1263 break;
1265 RegKeyEditPermissions(hWnd, hKeyRoot, NULL, keyPath);
1266 break;
1268 /*PRINTDLG pd;*/
1269 /*PrintDlg(&pd);*/
1270 /*PAGESETUPDLG psd;*/
1271 /*PageSetupDlg(&psd);*/
1272 break;
1274 break;
1275
1276 case ID_VIEW_REFRESH:
1278 keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
1279 RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath, TRUE);
1280 break;
1281 /*case ID_OPTIONS_TOOLBAR:*/
1282 /* toggle_child(hWnd, LOWORD(wParam), hToolBar);*/
1283 /* break;*/
1284 case ID_EDIT_NEW_KEY:
1286 break;
1287
1290 break;
1293 break;
1294 case ID_TREE_RENAME:
1297 break;
1298 case ID_TREE_DELETE:
1300 if (keyPath == 0 || *keyPath == 0)
1301 {
1303 }
1304 else if (DeleteKey(hWnd, hKeyRoot, keyPath))
1306 break;
1307 case ID_TREE_EXPORT:
1309 break;
1312 RegKeyEditPermissions(hWnd, hKeyRoot, NULL, keyPath);
1313 break;
1314 case ID_SWITCH_PANELS:
1315 {
1316 BOOL bShiftDown = GetKeyState(VK_SHIFT) < 0;
1317 HWND hwndItem = GetNextDlgTabItem(g_pChildWnd->hWnd, GetFocus(), bShiftDown);
1318 if (hwndItem == g_pChildWnd->hAddressBarWnd)
1319 PostMessageW(hwndItem, EM_SETSEL, 0, -1);
1320 SetFocus(hwndItem);
1321 }
1322 break;
1323
1324 case ID_ADDRESS_FOCUS:
1327 break;
1328
1329 default:
1331 {
1332 HMENU hMenu;
1333 MENUITEMINFOW mii;
1334 WCHAR szFavorite[512];
1335
1337
1338 memset(&mii, 0, sizeof(mii));
1339 mii.cbSize = sizeof(mii);
1340 mii.fMask = MIIM_TYPE;
1341 mii.fType = MFT_STRING;
1342 mii.dwTypeData = szFavorite;
1343 mii.cch = ARRAY_SIZE(szFavorite);
1344
1345 if (GetMenuItemInfo(hMenu, LOWORD(wParam) - ID_FAVORITES_MIN, TRUE, &mii))
1346 {
1347 ChooseFavorite(szFavorite);
1348 }
1349 }
1351 {
1352 WORD wID = LOWORD(wParam);
1354 while(wID > ID_TREE_SUGGESTION_MIN)
1355 {
1356 if (*s)
1357 s += wcslen(s) + 1;
1358 wID--;
1359 }
1361 }
1362 else
1363 {
1364 result = FALSE;
1365 }
1366 break;
1367 }
1368
1369 if(hKey)
1371 return result;
1372}
1373
1374/********************************************************************************
1375 *
1376 * FUNCTION: FrameWndProc(HWND, unsigned, WORD, LONG)
1377 *
1378 * PURPOSE: Processes messages for the main frame window.
1379 *
1380 * WM_COMMAND - process the application menu
1381 * WM_DESTROY - post a quit message and return
1382 *
1383 */
1384
1386{
1387 RECT rc;
1388 switch (message)
1389 {
1390 case WM_CREATE:
1391 // For now, the Help dialog item is disabled because of lacking of HTML Help support
1393 GetClientRect(hWnd, &rc);
1395 rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top,
1396 hWnd, (HMENU)0, hInst, 0);
1397 break;
1398 case WM_COMMAND:
1401 break;
1402 case WM_ACTIVATE:
1403 if (LOWORD(hWnd) && g_pChildWnd)
1405 break;
1406 case WM_SIZE:
1408 break;
1409 case WM_TIMER:
1410 break;
1411 case WM_INITMENU:
1413 break;
1414 case WM_ENTERMENULOOP:
1416 break;
1417 case WM_EXITMENULOOP:
1419 break;
1420 case WM_MENUSELECT:
1422 break;
1423 case WM_SYSCOLORCHANGE:
1424 /* Forward WM_SYSCOLORCHANGE to common controls */
1427 break;
1428 case WM_DESTROY:
1429 WinHelpW(hWnd, L"regedit", HELP_QUIT, 0);
1430 SaveSettings();
1431 PostQuitMessage(0);
1432 default:
1434 }
1435 return 0;
1436}
#define SE_BACKUP_NAME
#define SE_RESTORE_NAME
#define msg(x)
Definition: auth_time.c:54
void SaveSettings(void)
Definition: settings.c:115
HWND hWnd
Definition: settings.c:17
static __inline VOID DeleteNode(NODE *node)
Definition: text.h:48
#define IDS_APP_TITLE
Definition: resource.h:10
#define CF_UNICODETEXT
Definition: constants.h:408
void ShowAboutBox(HWND hWnd)
Definition: about.c:25
ChildWnd * g_pChildWnd
Definition: childwnd.c:23
BOOL ModifyValue(HWND hwnd, HKEY hKey, LPCWSTR valueName, BOOL EditBin)
Definition: edit.c:1656
BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath)
Definition: edit.c:2072
BOOL GetKeyName(LPWSTR pszDest, size_t iDestLength, HKEY hRootKey, LPCWSTR lpSubKey)
Definition: edit.c:2206
int InfoMessageBox(HWND hWnd, UINT uType, LPCWSTR lpTitle, LPCWSTR lpMessage,...)
Definition: error.c:51
int ErrorMessageBox(HWND hWnd, LPCWSTR lpTitle, DWORD dwErrorCode,...)
Definition: error.c:24
void FindNextMessageBox(HWND hWnd)
Definition: find.c:812
void FindDialog(HWND hWnd)
Definition: find.c:824
static HRESULT InvokeRemoteRegistryPickerDialog(IN IDsObjectPicker *pDsObjectPicker, IN HWND hwndParent OPTIONAL, OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: framewnd.c:986
BOOL CopyKeyName(HWND hWnd, HKEY hRootKey, LPCWSTR keyName)
Definition: framewnd.c:810
struct FILTERPAIR * PFILTERPAIR
void SetupStatusBar(HWND hWnd, BOOL bResize)
Definition: framewnd.c:161
static BOOL CheckCommDlgError(HWND hWnd)
Definition: framewnd.c:191
static void resize_frame_client(HWND hWnd)
Definition: framewnd.c:55
static BOOL UnloadHive(HWND hWnd)
Definition: framewnd.c:415
static void OnEnterMenuLoop(HWND hWnd)
Definition: framewnd.c:117
static BOOL InitOpenFileName(HWND hWnd, OPENFILENAME *pofn, BOOL bSave)
Definition: framewnd.c:257
BOOL PrintRegistryHive(HWND hWnd, LPWSTR path)
Definition: framewnd.c:716
static HRESULT InitializeRemoteRegistryPicker(OUT IDsObjectPicker **pDsObjectPicker)
Definition: framewnd.c:927
static INT_PTR CALLBACK LoadHive_KeyNameInHookProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: framewnd.c:304
#define LOADHIVE_KEYNAMELENGTH
Definition: framewnd.c:302
static BOOL EnablePrivilege(LPCWSTR lpszPrivilegeName, LPCWSTR lpszSystemName, BOOL bEnablePrivilege)
Definition: framewnd.c:328
#define FAVORITES_MENU_POSITION
Definition: framewnd.c:31
static void ChooseFavorite(LPCWSTR pszFavorite)
Definition: framewnd.c:788
static void OnMenuSelect(HWND hWnd, UINT nItemID, UINT nFlags, HMENU hSysMenu)
Definition: framewnd.c:137
static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
Definition: framewnd.c:1056
static void toggle_child(HWND hWnd, UINT cmd, HWND hchild)
Definition: framewnd.c:181
BOOL ExportRegistryFile(HWND hWnd)
Definition: framewnd.c:593
void UpdateStatusBar(void)
Definition: framewnd.c:173
static VOID FreeObjectPicker(IN IDsObjectPicker *pDsObjectPicker)
Definition: framewnd.c:1044
WCHAR Suggestions[256]
Definition: childwnd.c:27
static BOOL LoadHive(HWND hWnd)
Definition: framewnd.c:358
void BuildFilterStrings(WCHAR *Filter, PFILTERPAIR Pairs, int PairCount)
Definition: framewnd.c:242
static BOOL CreateNewValue(HKEY hRootKey, LPCWSTR pszKeyPath, DWORD dwType)
Definition: framewnd.c:847
static WCHAR s_szFavoritesRegKey[]
Definition: framewnd.c:33
static void OnExitMenuLoop(HWND hWnd)
Definition: framewnd.c:129
static BOOL ImportRegistryFile(HWND hWnd)
Definition: framewnd.c:447
static BOOL bInMenuLoop
Definition: framewnd.c:35
static UINT_PTR CALLBACK ExportRegistryFile_OFNHookProc(HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam)
Definition: framewnd.c:539
WCHAR FileNameBuffer[MAX_PATH]
Definition: framewnd.c:233
static void OnInitMenu(HWND hWnd)
Definition: framewnd.c:65
static void resize_frame_rect(HWND hWnd, PRECT prect)
Definition: framewnd.c:42
LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
Definition: framewnd.c:1385
BOOL RefreshListView(HWND hwndLV, HKEY hKey, LPCWSTR keyPath, BOOL bSelectNone)
Definition: listview.c:672
WCHAR * GetValueName(HWND hwndLV, int iStartAt)
Definition: listview.c:55
HMENU hMenuFrame
Definition: main.c:37
WCHAR szChildClass[MAX_LOADSTRING]
Definition: main.c:45
HWND hStatusBar
Definition: main.c:36
BOOL import_registry_file(FILE *reg_file)
Definition: regproc.c:1054
BOOL SelectNode(HWND hwndTV, LPCWSTR keyPath)
Definition: treeview.c:785
#define ARRAY_SIZE(A)
Definition: main.h:33
#define REG_FORMAT_5
Definition: main.h:44
#define REG_FORMAT_4
Definition: main.h:45
LPCWSTR GetItemPath(HWND hwndTV, HTREEITEM hItem, HKEY *phRootKey)
Definition: treeview.c:88
BOOL RegKeyEditPermissions(HWND hWndOwner, HKEY hKey, LPCWSTR lpMachine, LPCWSTR lpKeyName)
Definition: security.c:838
BOOL RefreshTreeView(HWND hWndTV)
Definition: treeview.c:322
BOOL export_registry_key(WCHAR *file_name, WCHAR *path, DWORD format)
Definition: regproc.c:1579
BOOL CreateNewKey(HWND hwndTV, HTREEITEM hItem)
Definition: treeview.c:584
BOOL txt_export_registry_key(LPCWSTR file_name, LPCWSTR path)
Definition: txtproc.c:401
#define ID_TREE_SUGGESTION_MIN
Definition: resource.h:156
#define ID_REGISTRY_EXPORTREGISTRYFILE
Definition: resource.h:69
#define IDS_QUERY_IMPORT_HIVE_MSG
Definition: resource.h:141
#define IDS_UNLOAD_HIVE
Definition: resource.h:144
#define ID_REGISTRY_OPENLOCAL
Definition: resource.h:102
#define ID_EDIT_COPYKEYNAME
Definition: resource.h:59
#define IDS_EXPORT_REG_FILE
Definition: resource.h:131
#define IDD_LOADHIVE
Definition: resource.h:290
#define IDS_FLT_ALLFILES_FLT
Definition: resource.h:170
#define IDS_FLT_REGEDIT4
Definition: resource.h:167
#define IDS_ERR_DELETEVALUE
Definition: resource.h:137
#define IDC_EXPORT_ALL
Definition: resource.h:286
#define IDS_FLT_REGEDIT4_FLT
Definition: resource.h:168
#define IDS_FLT_HIVFILES_FLT
Definition: resource.h:166
#define ID_EDIT_MODIFY
Definition: resource.h:62
#define ID_VIEW_STATUSBAR
Definition: resource.h:54
#define IDS_FLT_ALLFILES
Definition: resource.h:169
#define IDS_IMPORT_OK
Definition: resource.h:197
#define IDC_EDIT_KEY
Definition: resource.h:291
#define ID_REGISTRY_UNLOADHIVE
Definition: resource.h:105
#define IDS_IMPORT_REG_FILE
Definition: resource.h:130
#define ID_REGISTRY_PRINT
Definition: resource.h:72
#define ID_REGISTRY_PRINTERSETUP
Definition: resource.h:110
#define ID_TREE_PERMISSIONS
Definition: resource.h:159
#define ID_EDIT_DELETE
Definition: resource.h:57
#define IDS_QUERY_DELETE_CONFIRM
Definition: resource.h:135
#define IDS_QUERY_IMPORT_HIVE_CAPTION
Definition: resource.h:140
#define ID_TREE_EXPANDBRANCH
Definition: resource.h:93
#define IDC_EXPORT_BRANCH
Definition: resource.h:287
#define ID_VIEW_REFRESH
Definition: resource.h:56
#define ID_TREE_COLLAPSEBRANCH
Definition: resource.h:95
#define IDC_EXPORT_BRANCH_TEXT
Definition: resource.h:288
#define ID_EDIT_NEW_MULTISTRINGVALUE
Definition: resource.h:146
#define ID_VIEW_SPLIT
Definition: resource.h:55
#define ID_REGISTRY_CONNECTNETWORKREGISTRY
Definition: resource.h:70
#define ID_EDIT_NEW_STRINGVALUE
Definition: resource.h:64
#define IDS_EXPORT_ERROR
Definition: resource.h:199
#define IDS_FLT_REGFILES
Definition: resource.h:163
#define IDS_NEW_VALUE
Definition: resource.h:193
#define IDS_ERR_DELVAL_CAPTION
Definition: resource.h:136
#define ID_REGISTRY_DISCONNECTNETWORKREGISTRY
Definition: resource.h:71
#define IDS_LOAD_HIVE
Definition: resource.h:143
#define ID_ADDRESS_FOCUS
Definition: resource.h:160
#define IDS_FLT_REGFILES_FLT
Definition: resource.h:164
#define IDS_QUERY_DELETE_ONE
Definition: resource.h:133
#define ID_HELP_HELPTOPICS
Definition: resource.h:74
#define IDS_FLT_TXTFILES
Definition: resource.h:171
#define ID_EDIT_MODIFY_BIN
Definition: resource.h:122
#define ID_EDIT_NEW_EXPANDABLESTRINGVALUE
Definition: resource.h:147
#define IDS_FLT_HIVFILES
Definition: resource.h:165
#define ID_SWITCH_PANELS
Definition: resource.h:149
#define ID_EDIT_NEW_KEY
Definition: resource.h:63
#define ID_TREE_SUGGESTION_MAX
Definition: resource.h:157
#define ID_EDIT_RENAME
Definition: resource.h:58
#define ID_TREE_EXPORT
Definition: resource.h:158
#define IDD_EXPORTRANGE
Definition: resource.h:42
#define ID_FAVORITES_MAX
Definition: resource.h:365
#define ID_EDIT_FINDNEXT
Definition: resource.h:61
#define ID_EDIT_NEW_DWORDVALUE
Definition: resource.h:66
#define ID_VIEW_MENU
Definition: resource.h:25
#define ID_REGISTRY_LOADHIVE
Definition: resource.h:104
#define ID_FAVORITES_MIN
Definition: resource.h:364
#define ID_HELP_ABOUT
Definition: resource.h:75
#define ID_REGISTRY_EXIT
Definition: resource.h:51
#define ID_TREE_RENAME
Definition: resource.h:152
#define IDS_IMPORT_ERROR
Definition: resource.h:198
#define ID_TREE_DELETE
Definition: resource.h:151
#define ID_EDIT_PERMISSIONS
Definition: resource.h:150
#define IDS_FLT_TXTFILES_FLT
Definition: resource.h:172
#define IDS_QUERY_DELETE_MORE
Definition: resource.h:134
#define ID_EDIT_NEW_BINARYVALUE
Definition: resource.h:65
#define ID_EDIT_FIND
Definition: resource.h:60
#define ID_REGISTRY_IMPORTREGISTRYFILE
Definition: resource.h:68
#define RegCloseKey(hKey)
Definition: registry.h:49
#define CDERR_MEMLOCKFAILURE
Definition: cderr.h:15
#define FNERR_SUBCLASSFAILURE
Definition: cderr.h:35
#define CDERR_MEMALLOCFAILURE
Definition: cderr.h:14
#define FNERR_BUFFERTOOSMALL
Definition: cderr.h:37
#define CDERR_NOHINSTANCE
Definition: cderr.h:9
#define CDERR_LOADSTRFAILURE
Definition: cderr.h:10
#define CDERR_NOHOOK
Definition: cderr.h:16
#define FNERR_INVALIDFILENAME
Definition: cderr.h:36
#define CDERR_INITIALIZATION
Definition: cderr.h:7
#define CDERR_LOADRESFAILURE
Definition: cderr.h:12
#define CDERR_NOTEMPLATE
Definition: cderr.h:8
#define CDERR_FINDRESFAILURE
Definition: cderr.h:11
#define CDERR_LOCKRESFAILURE
Definition: cderr.h:13
#define CDERR_DIALOGFAILURE
Definition: cderr.h:4
#define CDERR_STRUCTSIZE
Definition: cderr.h:6
DWORD WINAPI CommDlgExtendedError(void)
Definition: cdlg32.c:148
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define OFN_OVERWRITEPROMPT
Definition: commdlg.h:116
#define GetSaveFileName
Definition: commdlg.h:666
#define OFN_EXPLORER
Definition: commdlg.h:104
#define PD_USEDEVMODECOPIESANDCOLLATE
Definition: commdlg.h:166
#define PD_RESULT_CANCEL
Definition: commdlg.h:201
#define PrintDlg
Definition: commdlg.h:668
#define PD_RETURNDC
Definition: commdlg.h:155
#define OFN_ENABLEHOOK
Definition: commdlg.h:99
#define OFN_HIDEREADONLY
Definition: commdlg.h:107
#define OFN_ENABLESIZING
Definition: commdlg.h:101
#define CDN_FILEOK
Definition: commdlg.h:38
#define OFN_FILEMUSTEXIST
Definition: commdlg.h:106
#define PD_RESULT_PRINT
Definition: commdlg.h:202
#define OFN_ENABLETEMPLATE
Definition: commdlg.h:102
#define PD_RESULT_APPLY
Definition: commdlg.h:203
#define OFN_PATHMUSTEXIST
Definition: commdlg.h:117
PRINTDLGA PRINTDLG
Definition: commdlg.h:660
#define GetOpenFileName
Definition: commdlg.h:665
OPENFILENAMEA OPENFILENAME
Definition: commdlg.h:657
static HWND hwndParent
Definition: cryptui.c:300
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:175
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_FAIL
Definition: ddrawi.h:102
#define ERROR_SUCCESS
Definition: deptool.c:10
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LONG WINAPI RegUnLoadKeyW(HKEY hKey, LPCWSTR lpSubKey)
Definition: reg.c:5078
LONG WINAPI RegFlushKey(HKEY hKey)
Definition: reg.c:2951
LONG WINAPI RegLoadKeyW(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpFile)
Definition: reg.c:3079
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3268
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4882
LONG WINAPI RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName)
Definition: reg.c:2330
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
Definition: reg.c:2830
LONG WINAPI RegSaveKeyW(HKEY hKey, LPCWSTR lpFile, LPSECURITY_ATTRIBUTES lpSecurityAttributes)
Definition: reg.c:4617
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
BOOL WINAPI LookupPrivilegeValueW(LPCWSTR lpSystemName, LPCWSTR lpPrivilegeName, PLUID lpLuid)
Definition: misc.c:782
BOOL WINAPI AdjustTokenPrivileges(HANDLE TokenHandle, BOOL DisableAllPrivileges, PTOKEN_PRIVILEGES NewState, DWORD BufferLength, PTOKEN_PRIVILEGES PreviousState, PDWORD ReturnLength)
Definition: security.c:374
BOOL WINAPI OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
Definition: security.c:294
#define CloseHandle
Definition: compat.h:739
#define wcschr
Definition: compat.h:17
#define GetCurrentProcess()
Definition: compat.h:759
#define MAX_PATH
Definition: compat.h:34
#define CALLBACK
Definition: compat.h:35
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
Definition: delete.c:39
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:1964
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:2067
void WINAPI ReleaseStgMedium(STGMEDIUM *pmedium)
Definition: ole2.c:2033
#define pt(x, y)
Definition: drawing.c:79
static BOOLEAN bSuccess
Definition: drive.cpp:433
_In_ uint64_t _In_ uint64_t _In_ uint64_t _In_opt_ traverse_ptr * tp
Definition: btrfs.c:2996
HINSTANCE hInst
Definition: dxdiag.c:13
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned short WORD
Definition: ntddk_ex.h:93
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1801
FxAutoRegKey hKey
static struct netconfig_info ni
Definition: getnetconfig.c:158
GLdouble s
Definition: gl.h:2039
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
const GLubyte * c
Definition: glext.h:8905
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: glext.h:7005
GLuint64EXT * result
Definition: glext.h:11304
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
Definition: heapmem.c:755
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
Definition: heapmem.c:1190
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:368
_Check_return_ _CRTIMP FILE *__cdecl _wfopen(_In_z_ const wchar_t *_Filename, _In_z_ const wchar_t *_Mode)
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
HRESULT GetData([in, unique] FORMATETC *pformatetcIn, [out] STGMEDIUM *pmedium)
ULONG Release()
nsrefcnt Release()
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
unsigned long long DWORDLONG
Definition: intsafe.h:93
#define FAILED(hr)
Definition: intsafe.h:51
#define c
Definition: ke_i.h:80
#define REG_SZ
Definition: layer.c:22
TCHAR szTitle[MAX_LOADSTRING]
Definition: magnifier.c:35
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define _MAX_PATH
Definition: utility.h:77
#define ERROR_ALREADY_EXISTS
Definition: disk.h:80
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:63
static ATOM item
Definition: dde.c:856
unsigned __int3264 UINT_PTR
Definition: mstsclib_h.h:274
unsigned int UINT
Definition: ndis.h:50
#define REG_BINARY
Definition: nt_native.h:1496
#define KEY_READ
Definition: nt_native.h:1023
#define KEY_QUERY_VALUE
Definition: nt_native.h:1016
#define REG_MULTI_SZ
Definition: nt_native.h:1501
#define KEY_WRITE
Definition: nt_native.h:1031
#define DWORD
Definition: nt_native.h:44
#define REG_EXPAND_SZ
Definition: nt_native.h:1494
#define KEY_SET_VALUE
Definition: nt_native.h:1017
#define UNICODE_NULL
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
#define L(x)
Definition: ntvdm.h:50
#define DSOP_SCOPE_TYPE_EXTERNAL_DOWNLEVEL_DOMAIN
Definition: objsel.h:127
#define DSOP_SCOPE_TYPE_DOWNLEVEL_JOINED_DOMAIN
Definition: objsel.h:123
#define DSOP_SCOPE_TYPE_USER_ENTERED_DOWNLEVEL_SCOPE
Definition: objsel.h:130
struct _DS_SELECTION_LIST * PDS_SELECTION_LIST
#define DSOP_SCOPE_TYPE_GLOBAL_CATALOG
Definition: objsel.h:125
#define DSOP_DOWNLEVEL_FILTER_COMPUTERS
Definition: objsel.h:54
#define DSOP_SCOPE_TYPE_USER_ENTERED_UPLEVEL_SCOPE
Definition: objsel.h:129
#define DSOP_SCOPE_TYPE_WORKGROUP
Definition: objsel.h:128
#define DSOP_SCOPE_TYPE_EXTERNAL_UPLEVEL_DOMAIN
Definition: objsel.h:126
#define DSOP_FILTER_COMPUTERS
Definition: objsel.h:41
#define DSOP_SCOPE_TYPE_UPLEVEL_JOINED_DOMAIN
Definition: objsel.h:122
struct _DSOP_SCOPE_INIT_INFO DSOP_SCOPE_INIT_INFO
#define CFSTR_DSOP_DS_SELECTION_LIST
Definition: objsel.h:27
#define LOWORD(l)
Definition: pedump.c:82
#define WS_CHILD
Definition: pedump.c:617
#define WS_VISIBLE
Definition: pedump.c:620
long LONG
Definition: pedump.c:60
#define ListView_SetItemState(hwndLV, i, data, mask)
Definition: commctrl.h:2673
#define LVFINDINFO
Definition: commctrl.h:2463
#define LVFI_STRING
Definition: commctrl.h:2437
#define TreeView_Expand(hwnd, hitem, code)
Definition: commctrl.h:3420
#define ListView_EditLabel(hwndLV, i)
Definition: commctrl.h:2540
#define LVNI_SELECTED
Definition: commctrl.h:2424
#define ListView_GetNextItem(hwnd, i, flags)
Definition: commctrl.h:2434
#define TreeView_GetSelection(hwnd)
Definition: commctrl.h:3473
#define TVE_EXPAND
Definition: commctrl.h:3423
#define LVIS_SELECTED
Definition: commctrl.h:2319
#define ListView_GetSelectedCount(hwndLV)
Definition: commctrl.h:2709
#define TVE_COLLAPSE
Definition: commctrl.h:3422
#define TreeView_EditLabel(hwnd, hitem)
Definition: commctrl.h:3504
#define SB_SETPARTS
Definition: commctrl.h:1954
#define SB_SETTEXTW
Definition: commctrl.h:1942
#define LVIS_FOCUSED
Definition: commctrl.h:2318
#define ListView_FindItem(hwnd, iStart, plvfi)
Definition: commctrl.h:2470
#define ListView_EnsureVisible(hwndLV, i, fPartialOK)
Definition: commctrl.h:2519
#define WM_NOTIFY
Definition: richedit.h:61
const WCHAR * str
#define REG_QWORD
Definition: sdbapi.c:597
#define REG_DWORD
Definition: sdbapi.c:596
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define memset(x, y, z)
Definition: compat.h:39
OPENFILENAME ofn
Definition: sndrec32.cpp:56
#define _countof(array)
Definition: sndvol32.h:68
& rect
Definition: startmenu.cpp:1413
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:166
int nSplitPos
Definition: main.h:69
HWND hTreeWnd
Definition: main.h:63
HWND hListWnd
Definition: main.h:64
HWND hAddressBarWnd
Definition: main.h:65
HWND hWnd
Definition: main.h:62
UINT FilterID
Definition: framewnd.c:238
UINT DisplayID
Definition: framewnd.c:237
ULONG cAttributesToFetch
Definition: objsel.h:114
ULONG cbSize
Definition: objsel.h:109
PCWSTR * apwzAttributeNames
Definition: objsel.h:115
PDSOP_SCOPE_INIT_INFO aDsScopeInfos
Definition: objsel.h:112
ULONG cDsScopeInfos
Definition: objsel.h:111
PCWSTR pwzTargetComputer
Definition: objsel.h:110
ULONG flOptions
Definition: objsel.h:113
DS_SELECTION aDsSelection[ANYSIZE_ARRAY]
Definition: objsel.h:146
PWSTR pwzName
Definition: objsel.h:134
LPOPENFILENAMEA lpOFN
Definition: commdlg.h:407
Definition: ftp_var.h:139
Definition: inflate.c:139
Definition: tftpd.h:60
LPWSTR dwTypeData
Definition: winuser.h:3269
LPARAM lCustData
Definition: commdlg.h:346
LPCSTR lpstrDefExt
Definition: commdlg.h:345
LPCSTR lpTemplateName
Definition: commdlg.h:348
DWORD nFilterIndex
Definition: commdlg.h:335
HWND hwndOwner
Definition: commdlg.h:330
LPCSTR lpstrTitle
Definition: commdlg.h:341
HINSTANCE hInstance
Definition: commdlg.h:331
WORD nFileExtension
Definition: commdlg.h:344
LPSTR lpstrFile
Definition: commdlg.h:336
DWORD Flags
Definition: commdlg.h:342
LPOFNHOOKPROC lpfnHook
Definition: commdlg.h:347
DWORD lStructSize
Definition: commdlg.h:329
LPCSTR lpstrFilter
Definition: commdlg.h:332
DWORD nMaxFile
Definition: commdlg.h:337
WORD nMaxPage
Definition: commdlg.h:474
HDC hDC
Definition: commdlg.h:469
DWORD Flags
Definition: commdlg.h:470
WORD nCopies
Definition: commdlg.h:475
WORD nFromPage
Definition: commdlg.h:471
HGLOBAL hDevMode
Definition: commdlg.h:467
WORD nToPage
Definition: commdlg.h:472
WORD nMinPage
Definition: commdlg.h:473
HGLOBAL hDevNames
Definition: commdlg.h:468
HWND hwndOwner
Definition: commdlg.h:466
DWORD lStructSize
Definition: commdlg.h:465
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
int32_t INT_PTR
Definition: typedefs.h:64
unsigned char * LPBYTE
Definition: typedefs.h:53
ULONG_PTR SIZE_T
Definition: typedefs.h:80
#define IN
Definition: typedefs.h:39
#define HIWORD(l)
Definition: typedefs.h:247
#define OUT
Definition: typedefs.h:40
UINT WINAPI GetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount)
Definition: dialog.c:2263
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
Definition: window.c:1412
#define ZeroMemory
Definition: winbase.h:1712
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define GMEM_MOVEABLE
Definition: winbase.h:294
#define MAX_COMPUTERNAME_LENGTH
Definition: winbase.h:243
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
#define ERROR_NOT_ALL_ASSIGNED
Definition: winerror.h:782
#define E_HANDLE
Definition: winerror.h:2850
#define E_POINTER
Definition: winerror.h:2365
BOOL WINAPI DeleteDC(_In_ HDC)
#define HKEY_CURRENT_USER
Definition: winreg.h:11
ACCESS_MASK REGSAM
Definition: winreg.h:69
#define RegRestoreKey
Definition: winreg.h:526
HWND WINAPI GetFocus(void)
Definition: window.c:1893
#define SW_HIDE
Definition: winuser.h:768
#define MF_BYCOMMAND
Definition: winuser.h:202
#define MAKELPARAM(l, h)
Definition: winuser.h:4008
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
int WINAPI GetMenuItemCount(_In_opt_ HMENU)
#define HELP_QUIT
Definition: winuser.h:2414
#define IDCANCEL
Definition: winuser.h:831
#define BST_UNCHECKED
Definition: winuser.h:199
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define AppendMenu
Definition: winuser.h:5731
#define MB_ICONHAND
Definition: winuser.h:788
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
#define WM_CREATE
Definition: winuser.h:1608
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
#define WM_SIZE
Definition: winuser.h:1611
HANDLE WINAPI SetClipboardData(_In_ UINT, _In_opt_ HANDLE)
#define WM_COMMAND
Definition: winuser.h:1740
BOOL WINAPI CloseClipboard(void)
Definition: ntwrapper.h:178
BOOL WINAPI WinHelpW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_ UINT, _In_ ULONG_PTR)
UINT WINAPI RegisterClipboardFormatW(_In_ LPCWSTR)
#define MF_CHECKED
Definition: winuser.h:132
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
#define WM_INITMENU
Definition: winuser.h:1745
BOOL WINAPI OpenClipboard(_In_opt_ HWND)
#define WM_INITDIALOG
Definition: winuser.h:1739
#define WM_LBUTTONDOWN
Definition: winuser.h:1776
#define MB_YESNO
Definition: winuser.h:817
BOOL WINAPI MessageBeep(_In_ UINT uType)
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1626
BOOL WINAPI SetCursorPos(_In_ int, _In_ int)
Definition: cursoricon.c:2662
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2105
HWND WINAPI GetNextDlgTabItem(_In_ HWND, _In_opt_ HWND, _In_ BOOL)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
#define MF_POPUP
Definition: winuser.h:136
BOOL WINAPI ClientToScreen(_In_ HWND, _Inout_ LPPOINT)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define IDOK
Definition: winuser.h:830
DWORD WINAPI CheckMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
#define BM_SETCHECK
Definition: winuser.h:1921
#define WM_ACTIVATE
Definition: winuser.h:1612
#define MB_ICONERROR
Definition: winuser.h:787
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
#define HELP_FINDER
Definition: winuser.h:2419
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define WM_ENTERMENULOOP
Definition: winuser.h:1804
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
HWND WINAPI SetFocus(_In_opt_ HWND)
#define MF_SEPARATOR
Definition: winuser.h:137
#define WM_TIMER
Definition: winuser.h:1742
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
#define MF_BYPOSITION
Definition: winuser.h:203
BOOL WINAPI RemoveMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
BOOL WINAPI EmptyClipboard(void)
Definition: ntwrapper.h:190
#define WM_EXITMENULOOP
Definition: winuser.h:1805
#define EM_SETSEL
Definition: winuser.h:2018
#define MB_OK
Definition: winuser.h:790
#define wsprintf
Definition: winuser.h:5865
#define MB_ICONWARNING
Definition: winuser.h:786
#define MB_ICONQUESTION
Definition: winuser.h:789
#define MB_ICONINFORMATION
Definition: winuser.h:802
#define MB_ICONSTOP
Definition: winuser.h:803
#define VK_SHIFT
Definition: winuser.h:2202
#define MFT_STRING
Definition: winuser.h:746
#define SW_SHOW
Definition: winuser.h:775
#define WM_DESTROY
Definition: winuser.h:1609
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define IDYES
Definition: winuser.h:835
#define IDC_SIZEWE
Definition: winuser.h:694
#define GetMenuItemInfo
Definition: winuser.h:5788
#define WM_MENUSELECT
Definition: winuser.h:1747
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
#define MIIM_TYPE
Definition: winuser.h:725
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define BST_CHECKED
Definition: winuser.h:197
HMENU WINAPI GetMenu(_In_ HWND)
SHORT WINAPI GetKeyState(_In_ int)
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
#define BM_GETCHECK
Definition: winuser.h:1918
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
#define MF_GRAYED
Definition: winuser.h:129
#define REG_FORCE_RESTORE
Definition: cmtypes.h:109
#define TOKEN_ADJUST_PRIVILEGES
Definition: setypes.h:930
#define SE_PRIVILEGE_ENABLED
Definition: setypes.h:63
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
unsigned char BYTE
Definition: xxhash.c:193