ReactOS 0.4.15-dev-6055-g36cdd34
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 wcscpy(str, L"");
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
235
236typedef struct
237{
241
242void
244{
245 int i, c;
246
247 c = 0;
248 for(i = 0; i < PairCount; i++)
249 {
250 c += LoadStringW(hInst, Pairs[i].DisplayID, &Filter[c], 255);
251 Filter[++c] = L'\0';
252 c += LoadStringW(hInst, Pairs[i].FilterID, &Filter[c], 255);
253 Filter[++c] = L'\0';
254 }
255 Filter[++c] = L'\0';
256}
257
259{
260 FILTERPAIR FilterPairs[4];
261 static WCHAR Filter[1024];
262
263 memset(pofn, 0, sizeof(OPENFILENAME));
264 pofn->lStructSize = sizeof(OPENFILENAME);
265 pofn->hwndOwner = hWnd;
266 pofn->hInstance = hInst;
267
268 /* create filter string */
269 FilterPairs[0].DisplayID = IDS_FLT_REGFILES;
270 FilterPairs[0].FilterID = IDS_FLT_REGFILES_FLT;
271 FilterPairs[1].DisplayID = IDS_FLT_HIVFILES;
272 FilterPairs[1].FilterID = IDS_FLT_HIVFILES_FLT;
273 FilterPairs[2].DisplayID = IDS_FLT_REGEDIT4;
274 FilterPairs[2].FilterID = IDS_FLT_REGEDIT4_FLT;
275 FilterPairs[3].DisplayID = IDS_FLT_ALLFILES;
276 FilterPairs[3].FilterID = IDS_FLT_ALLFILES_FLT;
277 BuildFilterStrings(Filter, FilterPairs, ARRAY_SIZE(FilterPairs));
278
279 pofn->lpstrFilter = Filter;
281 pofn->nMaxFile = _MAX_PATH;
283 pofn->nMaxFileTitle = _MAX_PATH;
285 pofn->lpstrDefExt = L"reg";
286 return TRUE;
287}
288
289#define LOADHIVE_KEYNAMELENGTH 128
290
292{
293 static LPWSTR sKey = NULL;
294 switch(uMsg)
295 {
296 case WM_INITDIALOG:
297 sKey = (LPWSTR)lParam;
298 break;
299 case WM_COMMAND:
300 switch(LOWORD(wParam))
301 {
302 case IDOK:
304 return EndDialog(hWndDlg, -1);
305 else
306 return EndDialog(hWndDlg, 0);
307 case IDCANCEL:
308 return EndDialog(hWndDlg, 0);
309 }
310 break;
311 }
312 return FALSE;
313}
314
315static BOOL EnablePrivilege(LPCWSTR lpszPrivilegeName, LPCWSTR lpszSystemName, BOOL bEnablePrivilege)
316{
317 BOOL bRet = FALSE;
318 HANDLE hToken = NULL;
319
322 &hToken))
323 {
325
326 tp.PrivilegeCount = 1;
327 tp.Privileges[0].Attributes = (bEnablePrivilege ? SE_PRIVILEGE_ENABLED : 0);
328
329 if (LookupPrivilegeValueW(lpszSystemName,
330 lpszPrivilegeName,
331 &tp.Privileges[0].Luid))
332 {
333 bRet = AdjustTokenPrivileges(hToken, FALSE, &tp, 0, NULL, NULL);
334
336 bRet = FALSE;
337 }
338
339 CloseHandle(hToken);
340 }
341
342 return bRet;
343}
344
346{
348 WCHAR Caption[128];
349 LPCWSTR pszKeyPath;
351 HKEY hRootKey;
352 WCHAR Filter[1024];
354 /* get the item key to load the hive in */
355 pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hRootKey);
356 /* initialize the "open file" dialog */
358 /* build the "All Files" filter up */
359 filter.DisplayID = IDS_FLT_ALLFILES;
360 filter.FilterID = IDS_FLT_ALLFILES_FLT;
363 /* load and set the caption and flags for dialog */
364 LoadStringW(hInst, IDS_LOAD_HIVE, Caption, ARRAY_SIZE(Caption));
365 ofn.lpstrTitle = Caption;
367 /* ofn.lCustData = ;*/
368 /* now load the hive */
369 if (GetOpenFileName(&ofn))
370 {
373 {
374 LONG regLoadResult;
375
376 /* Enable the 'restore' privilege, load the hive, disable the privilege */
378 regLoadResult = RegLoadKeyW(hRootKey, xPath, ofn.lpstrFile);
380
381 if(regLoadResult == ERROR_SUCCESS)
382 {
383 /* refresh tree and list views */
385 pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hRootKey);
386 RefreshListView(g_pChildWnd->hListWnd, hRootKey, pszKeyPath, TRUE);
387 }
388 else
389 {
390 ErrorMessageBox(hWnd, Caption, regLoadResult);
391 return FALSE;
392 }
393 }
394 }
395 else
396 {
398 }
399 return TRUE;
400}
401
403{
404 WCHAR Caption[128];
405 LPCWSTR pszKeyPath;
406 HKEY hRootKey;
407 LONG regUnloadResult;
408
409 /* get the item key to unload */
410 pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hRootKey);
411 /* load and set the caption and flags for dialog */
412 LoadStringW(hInst, IDS_UNLOAD_HIVE, Caption, ARRAY_SIZE(Caption));
413
414 /* Enable the 'restore' privilege, unload the hive, disable the privilege */
416 regUnloadResult = RegUnLoadKeyW(hRootKey, pszKeyPath);
418
419 if(regUnloadResult == ERROR_SUCCESS)
420 {
421 /* refresh tree and list views */
423 pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hRootKey);
424 RefreshListView(g_pChildWnd->hListWnd, hRootKey, pszKeyPath, TRUE);
425 }
426 else
427 {
428 ErrorMessageBox(hWnd, Caption, regUnloadResult);
429 return FALSE;
430 }
431 return TRUE;
432}
433
435{
436 BOOL bRet = FALSE;
438 WCHAR Caption[128], szTitle[512], szText[512];
439 HKEY hKeyRoot;
440 LPCWSTR pszKeyPath;
441
442 /* Figure out in which key path we are importing */
443 pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
444
446 LoadStringW(hInst, IDS_IMPORT_REG_FILE, Caption, ARRAY_SIZE(Caption));
447 ofn.lpstrTitle = Caption;
449 /* ofn.lCustData = ;*/
450 if (GetOpenFileName(&ofn))
451 {
452 /* Look at the extension of the file to determine its type */
453 if (ofn.nFileExtension >= 1 &&
454 _wcsicmp(ofn.lpstrFile + ofn.nFileExtension, L"reg") == 0) /* REGEDIT4 or Windows Registry Editor Version 5.00 */
455 {
456 /* Open the file */
457 FILE* fp = _wfopen(ofn.lpstrFile, L"rb");
458
459 /* Import it */
460 if (fp == NULL || !import_registry_file(fp))
461 {
462 /* Error opening the file */
464 LoadStringW(hInst, IDS_IMPORT_ERROR, szText, ARRAY_SIZE(szText));
466 bRet = FALSE;
467 }
468 else
469 {
470 /* Show successful import */
472 LoadStringW(hInst, IDS_IMPORT_OK, szText, ARRAY_SIZE(szText));
474 bRet = TRUE;
475 }
476
477 /* Close the file */
478 if (fp) fclose(fp);
479 }
480 else /* Registry Hive Files */
481 {
484
485 /* Display a confirmation message */
487 {
488 LONG lResult;
489 HKEY hSubKey;
490
491 /* Open the subkey */
492 lResult = RegOpenKeyExW(hKeyRoot, pszKeyPath, 0, KEY_WRITE, &hSubKey);
493 if (lResult == ERROR_SUCCESS)
494 {
495 /* Enable the 'restore' privilege, restore the hive then disable the privilege */
497 lResult = RegRestoreKey(hSubKey, ofn.lpstrFile, REG_FORCE_RESTORE);
499
500 /* Flush the subkey and close it */
501 RegFlushKey(hSubKey);
502 RegCloseKey(hSubKey);
503 }
504
505 /* Set the return value */
506 bRet = (lResult == ERROR_SUCCESS);
507
508 /* Display error, if any */
509 if (!bRet) ErrorMessageBox(hWnd, Caption, lResult);
510 }
511 }
512 }
513 else
514 {
516 }
517
518 /* refresh tree and list views */
520 pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
521 RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, pszKeyPath, TRUE);
522
523 return bRet;
524}
525
527{
528 HWND hwndExportAll;
529 HWND hwndExportBranch;
530 HWND hwndExportBranchText;
531 UINT_PTR iResult = 0;
532 OPENFILENAME *pOfn;
533 LPWSTR pszSelectedKey;
534 OFNOTIFY *pOfnNotify;
535
537
538 switch(uiMsg)
539 {
540 case WM_INITDIALOG:
541 pOfn = (OPENFILENAME *) lParam;
542 pszSelectedKey = (LPWSTR) pOfn->lCustData;
543
544 hwndExportAll = GetDlgItem(hdlg, IDC_EXPORT_ALL);
545 if (hwndExportAll)
546 SendMessageW(hwndExportAll, BM_SETCHECK, pszSelectedKey ? BST_UNCHECKED : BST_CHECKED, 0);
547
548 hwndExportBranch = GetDlgItem(hdlg, IDC_EXPORT_BRANCH);
549 if (hwndExportBranch)
550 SendMessageW(hwndExportBranch, BM_SETCHECK, pszSelectedKey ? BST_CHECKED : BST_UNCHECKED, 0);
551
552 hwndExportBranchText = GetDlgItem(hdlg, IDC_EXPORT_BRANCH_TEXT);
553 if (hwndExportBranchText)
554 SetWindowTextW(hwndExportBranchText, pszSelectedKey);
555 break;
556
557 case WM_NOTIFY:
558 if (((NMHDR *) lParam)->code == CDN_FILEOK)
559 {
560 pOfnNotify = (OFNOTIFY *) lParam;
561 pszSelectedKey = (LPWSTR) pOfnNotify->lpOFN->lCustData;
562
563 hwndExportBranch = GetDlgItem(hdlg, IDC_EXPORT_BRANCH);
564 hwndExportBranchText = GetDlgItem(hdlg, IDC_EXPORT_BRANCH_TEXT);
565 if (hwndExportBranch && hwndExportBranchText
566 && (SendMessageW(hwndExportBranch, BM_GETCHECK, 0, 0) == BST_CHECKED))
567 {
568 GetWindowTextW(hwndExportBranchText, pszSelectedKey, _MAX_PATH);
569 }
570 else if (pszSelectedKey)
571 {
572 pszSelectedKey[0] = L'\0';
573 }
574 }
575 break;
576 }
577 return iResult;
578}
579
581{
582 BOOL bRet = FALSE;
584 WCHAR ExportKeyPath[_MAX_PATH] = {0};
585 WCHAR Caption[128], szTitle[512], szText[512];
586 HKEY hKeyRoot;
587 LPCWSTR pszKeyPath;
588
589 /* Figure out which key path we are exporting */
590 pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
591 GetKeyName(ExportKeyPath, ARRAY_SIZE(ExportKeyPath), hKeyRoot, pszKeyPath);
592
594 LoadStringW(hInst, IDS_EXPORT_REG_FILE, Caption, ARRAY_SIZE(Caption));
595 ofn.lpstrTitle = Caption;
596
597 /* Only set the path if a key (not the root node) is selected */
598 if (hKeyRoot != 0)
599 {
600 ofn.lCustData = (LPARAM) ExportKeyPath;
601 }
605 if (GetSaveFileName(&ofn))
606 {
607 switch (ofn.nFilterIndex)
608 {
609 case 2: /* Registry Hive Files */
610 {
611 LONG lResult;
612 HKEY hSubKey;
613
614 /* Open the subkey */
615 lResult = RegOpenKeyExW(hKeyRoot, pszKeyPath, 0, KEY_READ, &hSubKey);
616 if (lResult == ERROR_SUCCESS)
617 {
618 /* Enable the 'backup' privilege, save the hive then disable the privilege */
620 lResult = RegSaveKeyW(hSubKey, ofn.lpstrFile, NULL);
621 if (lResult == ERROR_ALREADY_EXISTS)
622 {
623 /*
624 * We are here, that means that we already said "yes" to the confirmation dialog.
625 * So we absolutely want to replace the hive file.
626 */
628 {
629 /* Try again */
630 lResult = RegSaveKeyW(hSubKey, ofn.lpstrFile, NULL);
631 }
632 }
634
635 if (lResult != ERROR_SUCCESS)
636 {
637 /*
638 * If we are here, it's because RegSaveKeyW has failed for any reason.
639 * The problem is that even if it has failed, it has created or
640 * replaced the exported hive file with a new empty file. We don't
641 * want to keep this file, so we delete it.
642 */
644 }
645
646 /* Close the subkey */
647 RegCloseKey(hSubKey);
648 }
649
650 /* Set the return value */
651 bRet = (lResult == ERROR_SUCCESS);
652
653 /* Display error, if any */
654 if (!bRet) ErrorMessageBox(hWnd, Caption, lResult);
655
656 break;
657 }
658
659 case 1: /* Windows Registry Editor Version 5.00 */
660 case 3: /* REGEDIT4 */
661 default: /* All files ==> use Windows Registry Editor Version 5.00 */
662 {
663 if (!export_registry_key(ofn.lpstrFile, ExportKeyPath,
665 : REG_FORMAT_5)))
666 {
667 /* Error creating the file */
669 LoadStringW(hInst, IDS_EXPORT_ERROR, szText, ARRAY_SIZE(szText));
671 bRet = FALSE;
672 }
673 else
674 {
675 bRet = TRUE;
676 }
677
678 break;
679 }
680 }
681 }
682 else
683 {
685 }
686
687 return bRet;
688}
689
691{
692#if 1
693 PRINTDLG pd;
695
696 ZeroMemory(&pd, sizeof(PRINTDLG));
697 pd.lStructSize = sizeof(PRINTDLG);
698 pd.hwndOwner = hWnd;
699 pd.hDevMode = NULL; /* Don't forget to free or store hDevMode*/
700 pd.hDevNames = NULL; /* Don't forget to free or store hDevNames*/
702 pd.nCopies = 1;
703 pd.nFromPage = 0xFFFF;
704 pd.nToPage = 0xFFFF;
705 pd.nMinPage = 1;
706 pd.nMaxPage = 0xFFFF;
707 if (PrintDlg(&pd))
708 {
709 /* GDI calls to render output. */
710 DeleteDC(pd.hDC); /* Delete DC when done.*/
711 }
712#else
713 HRESULT hResult;
714 PRINTDLGEX pd;
715
716 hResult = PrintDlgEx(&pd);
717 if (hResult == S_OK)
718 {
719 switch (pd.dwResultAction)
720 {
721 case PD_RESULT_APPLY:
722 /*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. */
723 break;
724 case PD_RESULT_CANCEL:
725 /*The user clicked the Cancel button. The information in the PRINTDLGEX structure is unchanged. */
726 break;
727 case PD_RESULT_PRINT:
728 /*The user clicked the Print button. The PRINTDLGEX structure contains the information specified by the user. */
729 break;
730 default:
731 break;
732 }
733 }
734 else
735 {
736 switch (hResult)
737 {
738 case E_OUTOFMEMORY:
739 /*Insufficient memory. */
740 break;
741 case E_INVALIDARG:
742 /* One or more arguments are invalid. */
743 break;
744 case E_POINTER:
745 /*Invalid pointer. */
746 break;
747 case E_HANDLE:
748 /*Invalid handle. */
749 break;
750 case E_FAIL:
751 /*Unspecified error. */
752 break;
753 default:
754 break;
755 }
756 return FALSE;
757 }
758#endif
759 return TRUE;
760}
761
762static void ChooseFavorite(LPCWSTR pszFavorite)
763{
764 HKEY hKey = NULL;
765 WCHAR szFavoritePath[512];
766 DWORD cbData, dwType;
767
769 goto done;
770
771 cbData = sizeof(szFavoritePath);
772 memset(szFavoritePath, 0, sizeof(szFavoritePath));
773 if (RegQueryValueExW(hKey, pszFavorite, NULL, &dwType, (LPBYTE) szFavoritePath, &cbData) != ERROR_SUCCESS)
774 goto done;
775
776 if (dwType == REG_SZ)
777 SelectNode(g_pChildWnd->hTreeWnd, szFavoritePath);
778
779done:
780 if (hKey)
782}
783
785{
786 BOOL bClipboardOpened = FALSE;
788 WCHAR szBuffer[512];
789 HGLOBAL hGlobal;
790 LPWSTR s;
791
792 if (!OpenClipboard(hWnd))
793 goto done;
794 bClipboardOpened = TRUE;
795
796 if (!EmptyClipboard())
797 goto done;
798
799 if (!GetKeyName(szBuffer, ARRAY_SIZE(szBuffer), hRootKey, keyName))
800 goto done;
801
802 hGlobal = GlobalAlloc(GMEM_MOVEABLE, (wcslen(szBuffer) + 1) * sizeof(WCHAR));
803 if (!hGlobal)
804 goto done;
805
806 s = GlobalLock(hGlobal);
807 wcscpy(s, szBuffer);
808 GlobalUnlock(hGlobal);
809
811 bSuccess = TRUE;
812
813done:
814 if (bClipboardOpened)
816 return bSuccess;
817}
818
819static BOOL CreateNewValue(HKEY hRootKey, LPCWSTR pszKeyPath, DWORD dwType)
820{
821 WCHAR szNewValueFormat[128];
822 WCHAR szNewValue[128];
823 int iIndex = 1;
824 BYTE data[128];
825 DWORD dwExistingType, cbData;
826 LONG lResult;
827 HKEY hKey;
828 LVFINDINFO lvfi;
829
830 if (RegOpenKeyExW(hRootKey, pszKeyPath, 0, KEY_QUERY_VALUE | KEY_SET_VALUE,
831 &hKey) != ERROR_SUCCESS)
832 return FALSE;
833
834 LoadStringW(hInst, IDS_NEW_VALUE, szNewValueFormat, ARRAY_SIZE(szNewValueFormat));
835
836 do
837 {
838 wsprintf(szNewValue, szNewValueFormat, iIndex++);
839 cbData = sizeof(data);
840 lResult = RegQueryValueExW(hKey, szNewValue, NULL, &dwExistingType, data, &cbData);
841 }
842 while(lResult == ERROR_SUCCESS);
843
844 switch(dwType)
845 {
846 case REG_DWORD:
847 cbData = sizeof(DWORD);
848 break;
849 case REG_SZ:
850 case REG_EXPAND_SZ:
851 cbData = sizeof(WCHAR);
852 break;
853 case REG_MULTI_SZ:
854 /*
855 * WARNING: An empty multi-string has only one null char.
856 * Indeed, multi-strings are built in the following form:
857 * str1\0str2\0...strN\0\0
858 * where each strI\0 is a null-terminated string, and it
859 * ends with a terminating empty string.
860 * Therefore an empty multi-string contains only the terminating
861 * empty string, that is, one null char.
862 */
863 cbData = sizeof(WCHAR);
864 break;
865 case REG_QWORD: /* REG_QWORD_LITTLE_ENDIAN */
866 cbData = sizeof(DWORDLONG); // == sizeof(DWORD) * 2;
867 break;
868 default:
869 cbData = 0;
870 break;
871 }
872 memset(data, 0, cbData);
873 lResult = RegSetValueExW(hKey, szNewValue, 0, dwType, data, cbData);
875 if (lResult != ERROR_SUCCESS)
876 {
877 return FALSE;
878 }
879
880 RefreshListView(g_pChildWnd->hListWnd, hRootKey, pszKeyPath, TRUE);
881
882 /* locate the newly added value, and get ready to rename it */
883 memset(&lvfi, 0, sizeof(lvfi));
884 lvfi.flags = LVFI_STRING;
885 lvfi.psz = szNewValue;
886 iIndex = ListView_FindItem(g_pChildWnd->hListWnd, -1, &lvfi);
887 if (iIndex >= 0)
888 {
893 }
894
895 return TRUE;
896}
897
898static HRESULT
899InitializeRemoteRegistryPicker(OUT IDsObjectPicker **pDsObjectPicker)
900{
901 HRESULT hRet;
902
903 *pDsObjectPicker = NULL;
904
905 hRet = CoCreateInstance(&CLSID_DsObjectPicker,
906 NULL,
907 CLSCTX_INPROC_SERVER,
908 &IID_IDsObjectPicker,
909 (LPVOID*)pDsObjectPicker);
910 if (SUCCEEDED(hRet))
911 {
912 DSOP_INIT_INFO InitInfo;
913 static DSOP_SCOPE_INIT_INFO Scopes[] =
914 {
915 {
916 sizeof(DSOP_SCOPE_INIT_INFO),
921 0,
922 {
923 {
925 0,
926 0
927 },
929 },
930 NULL,
931 NULL,
932 S_OK
933 },
934 };
935
936 InitInfo.cbSize = sizeof(InitInfo);
937 InitInfo.pwzTargetComputer = NULL;
938 InitInfo.cDsScopeInfos = ARRAY_SIZE(Scopes);
939 InitInfo.aDsScopeInfos = Scopes;
940 InitInfo.flOptions = 0;
941 InitInfo.cAttributesToFetch = 0;
942 InitInfo.apwzAttributeNames = NULL;
943
944 hRet = (*pDsObjectPicker)->lpVtbl->Initialize(*pDsObjectPicker,
945 &InitInfo);
946
947 if (FAILED(hRet))
948 {
949 /* delete the object picker in case initialization failed! */
950 (*pDsObjectPicker)->lpVtbl->Release(*pDsObjectPicker);
951 }
952 }
953
954 return hRet;
955}
956
957static HRESULT
958InvokeRemoteRegistryPickerDialog(IN IDsObjectPicker *pDsObjectPicker,
961 IN UINT uSize)
962{
963 IDataObject *pdo = NULL;
964 HRESULT hRet;
965
966 hRet = pDsObjectPicker->lpVtbl->InvokeDialog(pDsObjectPicker,
968 &pdo);
969 if (hRet == S_OK)
970 {
971 STGMEDIUM stm;
972 FORMATETC fe;
973
974 fe.cfFormat = (CLIPFORMAT) RegisterClipboardFormatW(CFSTR_DSOP_DS_SELECTION_LIST);
975 fe.ptd = NULL;
976 fe.dwAspect = DVASPECT_CONTENT;
977 fe.lindex = -1;
978 fe.tymed = TYMED_HGLOBAL;
979
980 hRet = pdo->lpVtbl->GetData(pdo,
981 &fe,
982 &stm);
983 if (SUCCEEDED(hRet))
984 {
985 PDS_SELECTION_LIST SelectionList = (PDS_SELECTION_LIST)GlobalLock(stm.hGlobal);
986 if (SelectionList != NULL)
987 {
988 if (SelectionList->cItems == 1)
989 {
990 size_t nlen = wcslen(SelectionList->aDsSelection[0].pwzName);
991 if (nlen >= uSize)
992 {
993 nlen = uSize - 1;
994 }
995
997 SelectionList->aDsSelection[0].pwzName,
998 nlen * sizeof(WCHAR));
999
1000 lpBuffer[nlen] = L'\0';
1001 }
1002
1003 GlobalUnlock(stm.hGlobal);
1004 }
1005
1006 ReleaseStgMedium(&stm);
1007 }
1008
1009 pdo->lpVtbl->Release(pdo);
1010 }
1011
1012 return hRet;
1013}
1014
1015static VOID
1016FreeObjectPicker(IN IDsObjectPicker *pDsObjectPicker)
1017{
1018 pDsObjectPicker->lpVtbl->Release(pDsObjectPicker);
1019}
1020
1021/*******************************************************************************
1022 *
1023 * FUNCTION: _CmdWndProc(HWND, unsigned, WORD, LONG)
1024 *
1025 * PURPOSE: Processes WM_COMMAND messages for the main frame window.
1026 *
1027 */
1029{
1030 HKEY hKeyRoot = 0, hKey = 0;
1031 LPCWSTR keyPath;
1032 LPCWSTR valueName;
1033 BOOL result = TRUE;
1034 REGSAM regsam = KEY_READ;
1035 int item;
1036
1039
1040 switch (LOWORD(wParam))
1041 {
1043 LoadHive(hWnd);
1044 return TRUE;
1047 return TRUE;
1050 return TRUE;
1053 return TRUE;
1055 {
1056 IDsObjectPicker *ObjectPicker;
1057 WCHAR szComputerName[MAX_COMPUTERNAME_LENGTH + 1];
1058 HRESULT hRet;
1059
1060 hRet = CoInitialize(NULL);
1061 if (SUCCEEDED(hRet))
1062 {
1063 hRet = InitializeRemoteRegistryPicker(&ObjectPicker);
1064 if (SUCCEEDED(hRet))
1065 {
1066 hRet = InvokeRemoteRegistryPickerDialog(ObjectPicker,
1067 hWnd,
1068 szComputerName,
1069 ARRAY_SIZE(szComputerName));
1070 if (hRet == S_OK)
1071 {
1072 /* FIXME - connect to the registry */
1073 }
1074
1075 FreeObjectPicker(ObjectPicker);
1076 }
1077
1079 }
1080
1081 return TRUE;
1082 }
1084 return TRUE;
1085 case ID_REGISTRY_PRINT:
1087 return TRUE;
1088 case ID_REGISTRY_EXIT:
1090 return TRUE;
1091 case ID_VIEW_STATUSBAR:
1093 return TRUE;
1094 case ID_HELP_HELPTOPICS:
1095 WinHelpW(hWnd, L"regedit", HELP_FINDER, 0);
1096 return TRUE;
1097 case ID_HELP_ABOUT:
1099 return TRUE;
1100 case ID_VIEW_SPLIT:
1101 {
1102 RECT rt;
1103 POINT pt, pts;
1105 pt.x = rt.left + g_pChildWnd->nSplitPos;
1106 pt.y = (rt.bottom / 2);
1107 pts = pt;
1108 if(ClientToScreen(g_pChildWnd->hWnd, &pts))
1109 {
1110 SetCursorPos(pts.x, pts.y);
1113 }
1114 return TRUE;
1115 }
1116 case ID_EDIT_RENAME:
1117 case ID_EDIT_MODIFY:
1118 case ID_EDIT_MODIFY_BIN:
1119 case ID_EDIT_DELETE:
1120 regsam |= KEY_WRITE;
1121 break;
1122 }
1123
1124 keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
1125 valueName = GetValueName(g_pChildWnd->hListWnd, -1);
1126 if (keyPath)
1127 {
1128 if (RegOpenKeyExW(hKeyRoot, keyPath, 0, regsam, &hKey) != ERROR_SUCCESS)
1129 hKey = 0;
1130 }
1131
1132 switch (LOWORD(wParam))
1133 {
1134 case ID_EDIT_MODIFY:
1135 if (valueName && ModifyValue(hWnd, hKey, valueName, FALSE))
1136 RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath, FALSE);
1137 break;
1138 case ID_EDIT_MODIFY_BIN:
1139 if (valueName && ModifyValue(hWnd, hKey, valueName, TRUE))
1140 RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath, FALSE);
1141 break;
1142 case ID_EDIT_RENAME:
1143 if (GetFocus() == g_pChildWnd->hListWnd)
1144 {
1146 {
1148 if(item > -1)
1149 {
1151 }
1152 }
1153 }
1154 else if (GetFocus() == g_pChildWnd->hTreeWnd)
1155 {
1156 /* Get focused entry of treeview (if any) */
1158 if (hItem != NULL)
1160 }
1161 break;
1162 case ID_EDIT_DELETE:
1163 {
1164 if (GetFocus() == g_pChildWnd->hListWnd && hKey)
1165 {
1167 if(nSelected >= 1)
1168 {
1169 WCHAR msg[128], caption[128];
1173 {
1174 int ni, errs;
1175
1176 item = -1;
1177 errs = 0;
1179 {
1180 valueName = GetValueName(g_pChildWnd->hListWnd, item);
1181 if(RegDeleteValueW(hKey, valueName) != ERROR_SUCCESS)
1182 {
1183 errs++;
1184 }
1185 item = ni;
1186 }
1187
1188 RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath, FALSE);
1189 if(errs > 0)
1190 {
1194 }
1195 }
1196 }
1197 }
1198 else if (GetFocus() == g_pChildWnd->hTreeWnd)
1199 {
1200 if (keyPath == NULL || *keyPath == UNICODE_NULL)
1201 {
1203 }
1204 else if (DeleteKey(hWnd, hKeyRoot, keyPath))
1205 {
1208 }
1209 }
1210 break;
1211 }
1213 CreateNewValue(hKeyRoot, keyPath, REG_SZ);
1214 break;
1216 CreateNewValue(hKeyRoot, keyPath, REG_BINARY);
1217 break;
1219 CreateNewValue(hKeyRoot, keyPath, REG_DWORD);
1220 break;
1222 CreateNewValue(hKeyRoot, keyPath, REG_MULTI_SZ);
1223 break;
1225 CreateNewValue(hKeyRoot, keyPath, REG_EXPAND_SZ);
1226 break;
1227 case ID_EDIT_FIND:
1229 break;
1230 case ID_EDIT_FINDNEXT:
1232 break;
1234 CopyKeyName(hWnd, hKeyRoot, keyPath);
1235 break;
1237 RegKeyEditPermissions(hWnd, hKeyRoot, NULL, keyPath);
1238 break;
1240 /*PRINTDLG pd;*/
1241 /*PrintDlg(&pd);*/
1242 /*PAGESETUPDLG psd;*/
1243 /*PageSetupDlg(&psd);*/
1244 break;
1246 break;
1247
1248 case ID_VIEW_REFRESH:
1250 keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
1251 RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath, TRUE);
1252 break;
1253 /*case ID_OPTIONS_TOOLBAR:*/
1254 /* toggle_child(hWnd, LOWORD(wParam), hToolBar);*/
1255 /* break;*/
1256 case ID_EDIT_NEW_KEY:
1258 break;
1259
1262 break;
1265 break;
1266 case ID_TREE_RENAME:
1269 break;
1270 case ID_TREE_DELETE:
1272 if (keyPath == 0 || *keyPath == 0)
1273 {
1275 }
1276 else if (DeleteKey(hWnd, hKeyRoot, keyPath))
1278 break;
1279 case ID_TREE_EXPORT:
1281 break;
1284 RegKeyEditPermissions(hWnd, hKeyRoot, NULL, keyPath);
1285 break;
1286 case ID_SWITCH_PANELS:
1287 {
1288 BOOL bShiftDown = GetKeyState(VK_SHIFT) < 0;
1289 HWND hwndItem = GetNextDlgTabItem(g_pChildWnd->hWnd, GetFocus(), bShiftDown);
1290 if (hwndItem == g_pChildWnd->hAddressBarWnd)
1291 PostMessageW(hwndItem, EM_SETSEL, 0, -1);
1292 SetFocus(hwndItem);
1293 }
1294 break;
1295
1296 case ID_ADDRESS_FOCUS:
1299 break;
1300
1301 default:
1303 {
1304 HMENU hMenu;
1305 MENUITEMINFOW mii;
1306 WCHAR szFavorite[512];
1307
1309
1310 memset(&mii, 0, sizeof(mii));
1311 mii.cbSize = sizeof(mii);
1312 mii.fMask = MIIM_TYPE;
1313 mii.fType = MFT_STRING;
1314 mii.dwTypeData = szFavorite;
1315 mii.cch = ARRAY_SIZE(szFavorite);
1316
1317 if (GetMenuItemInfo(hMenu, LOWORD(wParam) - ID_FAVORITES_MIN, TRUE, &mii))
1318 {
1319 ChooseFavorite(szFavorite);
1320 }
1321 }
1323 {
1324 WORD wID = LOWORD(wParam);
1326 while(wID > ID_TREE_SUGGESTION_MIN)
1327 {
1328 if (*s)
1329 s += wcslen(s) + 1;
1330 wID--;
1331 }
1333 }
1334 else
1335 {
1336 result = FALSE;
1337 }
1338 break;
1339 }
1340
1341 if(hKey)
1343 return result;
1344}
1345
1346/********************************************************************************
1347 *
1348 * FUNCTION: FrameWndProc(HWND, unsigned, WORD, LONG)
1349 *
1350 * PURPOSE: Processes messages for the main frame window.
1351 *
1352 * WM_COMMAND - process the application menu
1353 * WM_DESTROY - post a quit message and return
1354 *
1355 */
1356
1358{
1359 RECT rc;
1360 switch (message)
1361 {
1362 case WM_CREATE:
1363 // For now, the Help dialog item is disabled because of lacking of HTML Help support
1365 GetClientRect(hWnd, &rc);
1367 rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top,
1368 hWnd, (HMENU)0, hInst, 0);
1369 break;
1370 case WM_COMMAND:
1373 break;
1374 case WM_ACTIVATE:
1375 if (LOWORD(hWnd) && g_pChildWnd)
1377 break;
1378 case WM_SIZE:
1380 break;
1381 case WM_TIMER:
1382 break;
1383 case WM_INITMENU:
1385 break;
1386 case WM_ENTERMENULOOP:
1388 break;
1389 case WM_EXITMENULOOP:
1391 break;
1392 case WM_MENUSELECT:
1394 break;
1395 case WM_SYSCOLORCHANGE:
1396 /* Forward WM_SYSCOLORCHANGE to common controls */
1399 break;
1400 case WM_DESTROY:
1401 WinHelpW(hWnd, L"regedit", HELP_QUIT, 0);
1402 SaveSettings();
1403 PostQuitMessage(0);
1404 default:
1406 }
1407 return 0;
1408}
#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:1072
BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath)
Definition: edit.c:1456
BOOL GetKeyName(LPWSTR pszDest, size_t iDestLength, HKEY hRootKey, LPCWSTR lpSubKey)
Definition: edit.c:1588
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:813
void FindDialog(HWND hWnd)
Definition: find.c:825
static HRESULT InvokeRemoteRegistryPickerDialog(IN IDsObjectPicker *pDsObjectPicker, IN HWND hwndParent OPTIONAL, OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: framewnd.c:958
BOOL CopyKeyName(HWND hWnd, HKEY hRootKey, LPCWSTR keyName)
Definition: framewnd.c:784
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:402
static void OnEnterMenuLoop(HWND hWnd)
Definition: framewnd.c:117
BOOL PrintRegistryHive(HWND hWnd, LPWSTR path)
Definition: framewnd.c:690
static BOOL InitOpenFileName(HWND hWnd, OPENFILENAME *pofn)
Definition: framewnd.c:258
static HRESULT InitializeRemoteRegistryPicker(OUT IDsObjectPicker **pDsObjectPicker)
Definition: framewnd.c:899
static INT_PTR CALLBACK LoadHive_KeyNameInHookProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: framewnd.c:291
#define LOADHIVE_KEYNAMELENGTH
Definition: framewnd.c:289
static BOOL EnablePrivilege(LPCWSTR lpszPrivilegeName, LPCWSTR lpszSystemName, BOOL bEnablePrivilege)
Definition: framewnd.c:315
WCHAR FileNameBuffer[_MAX_PATH]
Definition: framewnd.c:233
#define FAVORITES_MENU_POSITION
Definition: framewnd.c:31
static void ChooseFavorite(LPCWSTR pszFavorite)
Definition: framewnd.c:762
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:1028
static void toggle_child(HWND hWnd, UINT cmd, HWND hchild)
Definition: framewnd.c:181
BOOL ExportRegistryFile(HWND hWnd)
Definition: framewnd.c:580
void UpdateStatusBar(void)
Definition: framewnd.c:173
static VOID FreeObjectPicker(IN IDsObjectPicker *pDsObjectPicker)
Definition: framewnd.c:1016
WCHAR Suggestions[256]
Definition: childwnd.c:27
static BOOL LoadHive(HWND hWnd)
Definition: framewnd.c:345
WCHAR FileTitleBuffer[_MAX_PATH]
Definition: framewnd.c:234
void BuildFilterStrings(WCHAR *Filter, PFILTERPAIR Pairs, int PairCount)
Definition: framewnd.c:243
static BOOL CreateNewValue(HKEY hRootKey, LPCWSTR pszKeyPath, DWORD dwType)
Definition: framewnd.c:819
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:434
static BOOL bInMenuLoop
Definition: framewnd.c:35
static UINT_PTR CALLBACK ExportRegistryFile_OFNHookProc(HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam)
Definition: framewnd.c:526
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:1357
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
BOOL import_registry_file(FILE *reg_file)
Definition: regproc.c:1049
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:839
BOOL RefreshTreeView(HWND hWndTV)
Definition: treeview.c:322
BOOL export_registry_key(WCHAR *file_name, WCHAR *path, DWORD format)
Definition: regproc.c:1546
BOOL CreateNewKey(HWND hwndTV, HTREEITEM hItem)
Definition: treeview.c:584
#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:262
#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:258
#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:195
#define IDC_EDIT_KEY
Definition: resource.h:263
#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:259
#define ID_VIEW_REFRESH
Definition: resource.h:56
#define ID_TREE_COLLAPSEBRANCH
Definition: resource.h:95
#define IDC_EXPORT_BRANCH_TEXT
Definition: resource.h:260
#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:197
#define IDS_FLT_REGFILES
Definition: resource.h:163
#define IDS_NEW_VALUE
Definition: resource.h:191
#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 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:295
#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:294
#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:196
#define ID_TREE_DELETE
Definition: resource.h:151
#define ID_EDIT_PERMISSIONS
Definition: resource.h:150
#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:47
#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 PD_RESULT_PRINT
Definition: commdlg.h:202
#define OFN_ENABLETEMPLATE
Definition: commdlg.h:102
#define PD_RESULT_APPLY
Definition: commdlg.h:203
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:3353
LONG WINAPI RegUnLoadKeyW(HKEY hKey, LPCWSTR lpSubKey)
Definition: reg.c:5093
LONG WINAPI RegFlushKey(HKEY hKey)
Definition: reg.c:2971
LONG WINAPI RegLoadKeyW(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpFile)
Definition: reg.c:3099
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3288
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:4897
LONG WINAPI RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName)
Definition: reg.c:2352
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:2850
LONG WINAPI RegSaveKeyW(HKEY hKey, LPCWSTR lpFile, LPSECURITY_ATTRIBUTES lpSecurityAttributes)
Definition: reg.c:4632
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4118
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:376
BOOL WINAPI OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
Definition: security.c:296
#define CloseHandle
Definition: compat.h:739
#define wcschr
Definition: compat.h:17
#define GetCurrentProcess()
Definition: compat.h:759
#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
HWND hStatusBar
Definition: winproc.cpp:20
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:60
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)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
#define memset(x, y, z)
Definition: compat.h:39
OPENFILENAME ofn
Definition: sndrec32.cpp:56
& rect
Definition: startmenu.cpp:1413
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
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:239
UINT DisplayID
Definition: framewnd.c:238
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:3259
LPARAM lCustData
Definition: commdlg.h:346
LPCSTR lpstrDefExt
Definition: commdlg.h:345
LPSTR lpstrFileTitle
Definition: commdlg.h:338
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 nMaxFileTitle
Definition: commdlg.h:339
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
#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:1670
DWORD WINAPI GetLastError(void)
Definition: except.c:1040
#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:1894
#define SW_HIDE
Definition: winuser.h:762
#define MF_BYCOMMAND
Definition: winuser.h:202
#define MAKELPARAM(l, h)
Definition: winuser.h:3998
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:2404
#define IDCANCEL
Definition: winuser.h:825
#define BST_UNCHECKED
Definition: winuser.h:199
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define AppendMenu
Definition: winuser.h:5721
#define MB_ICONHAND
Definition: winuser.h:782
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
#define WM_CREATE
Definition: winuser.h:1598
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:1601
HANDLE WINAPI SetClipboardData(_In_ UINT, _In_opt_ HANDLE)
#define WM_COMMAND
Definition: winuser.h:1730
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:1735
BOOL WINAPI OpenClipboard(_In_opt_ HWND)
#define WM_INITDIALOG
Definition: winuser.h:1729
#define WM_LBUTTONDOWN
Definition: winuser.h:1766
#define MB_YESNO
Definition: winuser.h:811
BOOL WINAPI MessageBeep(_In_ UINT uType)
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1616
BOOL WINAPI SetCursorPos(_In_ int, _In_ int)
Definition: cursoricon.c:2631
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2074
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:824
DWORD WINAPI CheckMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
#define BM_SETCHECK
Definition: winuser.h:1911
#define WM_ACTIVATE
Definition: winuser.h:1602
#define MB_ICONERROR
Definition: winuser.h:781
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
#define HELP_FINDER
Definition: winuser.h:2409
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define WM_ENTERMENULOOP
Definition: winuser.h:1794
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:1732
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:1795
#define EM_SETSEL
Definition: winuser.h:2008
#define MB_OK
Definition: winuser.h:784
#define wsprintf
Definition: winuser.h:5855
#define MB_ICONWARNING
Definition: winuser.h:780
#define MB_ICONQUESTION
Definition: winuser.h:783
#define MB_ICONINFORMATION
Definition: winuser.h:796
#define MB_ICONSTOP
Definition: winuser.h:797
#define VK_SHIFT
Definition: winuser.h:2192
#define MFT_STRING
Definition: winuser.h:741
#define SW_SHOW
Definition: winuser.h:769
#define WM_DESTROY
Definition: winuser.h:1599
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define IDYES
Definition: winuser.h:829
#define IDC_SIZEWE
Definition: winuser.h:689
#define GetMenuItemInfo
Definition: winuser.h:5778
#define WM_MENUSELECT
Definition: winuser.h:1737
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:720
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:1908
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:926
#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