ReactOS 0.4.15-dev-7961-gdcf9eb0
taskmgr.c
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Task Manager
3 * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
4 * PURPOSE: Application Entry-point
5 * COPYRIGHT: Copyright 1999-2001 Brian Palmer <brianp@reactos.org>
6 * Copyright 2005 Klemens Friedl <frik85@reactos.at>
7 */
8
9#include "precomp.h"
10
11#include "perfpage.h"
12#include "about.h"
13#include "affinity.h"
14#include "debug.h"
15#include "priority.h"
16
17#define STATUS_WINDOW 2001
18
19/* Global Variables: */
20HINSTANCE hInst; /* current instance */
21
22HWND hMainWnd; /* Main Window */
23HWND hStatusWnd; /* Status Bar Window */
24HWND hTabWnd; /* Tab Control Window */
25
27
28int nMinimumWidth; /* Minimum width of the dialog (OnSize()'s cx) */
29int nMinimumHeight; /* Minimum height of the dialog (OnSize()'s cy) */
30
31int nOldWidth; /* Holds the previous client area width */
32int nOldHeight; /* Holds the previous client area height */
33
34BOOL bTrackMenu = FALSE; /* Signals when we display menu hints */
35BOOL bWasKeyboardInput = FALSE; /* TabChange by Keyboard or Mouse ? */
36
38
40// Taken from WinSpy++ 1.7
41// http://www.catch22.net/software/winspy
42// Copyright (c) 2002 by J Brown
43//
44
45//
46// Copied from uxtheme.h
47// If you have this new header, then delete these and
48// #include <uxtheme.h> instead!
49//
50#define ETDT_DISABLE 0x00000001
51#define ETDT_ENABLE 0x00000002
52#define ETDT_USETABTEXTURE 0x00000004
53#define ETDT_ENABLETAB (ETDT_ENABLE | ETDT_USETABTEXTURE)
54
55//
57
58//
59// Try to call EnableThemeDialogTexture, if uxtheme.dll is present
60//
62{
63 HMODULE hUXTheme;
65
66 hUXTheme = LoadLibraryA("uxtheme.dll");
67
68 if(hUXTheme)
69 {
71 (ETDTProc)GetProcAddress(hUXTheme, "EnableThemeDialogTexture");
72
74 {
76
77 FreeLibrary(hUXTheme);
78 return TRUE;
79 }
80 else
81 {
82 // Failed to locate API!
83 FreeLibrary(hUXTheme);
84 return FALSE;
85 }
86 }
87 else
88 {
89 // Not running under XP? Just fail gracefully
90 return FALSE;
91 }
92}
93
95 HINSTANCE hPrevInstance,
96 LPWSTR lpCmdLine,
97 int nCmdShow)
98{
100 HANDLE hToken;
103
104 /* check wether we're already running or not */
105 hMutex = CreateMutexW(NULL, TRUE, L"taskmgrros");
107 {
108 /* Restore existing taskmanager and bring window to front */
109 /* Relies on the fact that the application title string and window title are the same */
110 HWND hTaskMgr;
111 TCHAR szTaskmgr[128];
112
113 LoadString(hInst, IDS_APP_TITLE, szTaskmgr, _countof(szTaskmgr));
114 hTaskMgr = FindWindow(NULL, szTaskmgr);
115
116 if (hTaskMgr != NULL)
117 {
118 SendMessage(hTaskMgr, WM_SYSCOMMAND, SC_RESTORE, 0);
119 SetForegroundWindow(hTaskMgr);
120 }
121
123 return 0;
124 }
125 else if (!hMutex)
126 {
127 return 1;
128 }
129
130 /* Initialize global variables */
132
133 /* Change our priority class to HIGH */
137
138 /* Now lets get the SE_DEBUG_NAME privilege
139 * so that we can debug processes
140 */
141
142 /* Get a token for this process. */
144 {
145 /* Get the LUID for the debug privilege. */
147 {
148 tkp.PrivilegeCount = 1; /* one privilege to set */
150
151 /* Get the debug privilege for this process. */
152 AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
153 }
154 CloseHandle(hToken);
155 }
156
157 /* Load our settings from the registry */
158 LoadSettings();
159
160 /* Initialize perf data */
161 if (!PerfDataInitialize())
162 return -1;
163
164 /*
165 * Set our shutdown parameters: we want to shutdown the very last,
166 * without displaying any end task dialog if needed.
167 */
169
171
172 /* Save our settings to the registry */
173 SaveSettings();
176 if (hWindowMenu)
178 return 0;
179}
180
181/* Message handler for dialog box. */
184{
185#if 0
186 HDC hdc;
187 PAINTSTRUCT ps;
188 RECT rc;
189#endif
190 LPRECT pRC;
191 LPNMHDR pnmh;
193
194 switch (message) {
195 case WM_INITDIALOG:
196 // For now, the Help dialog menu item is disabled because of lacking of HTML Help support
198 hMainWnd = hDlg;
199 return OnCreate(hDlg);
200
201 case WM_COMMAND:
202 if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) {
203 EndDialog(hDlg, LOWORD(wParam));
204 return TRUE;
205 }
206 /* Process menu commands */
207 switch (LOWORD(wParam))
208 {
209 case ID_FILE_NEW:
211 break;
214 break;
217 break;
220 break;
223 break;
224 case ID_RESTORE:
226 break;
227 case ID_VIEW_LARGE:
228 case ID_VIEW_SMALL:
229 case ID_VIEW_DETAILS:
231 break;
234 break;
237 break;
240 break;
246 break;
249 break;
250 case ID_VIEW_REFRESH:
251 PostMessageW(hDlg, WM_TIMER, 0, 0);
252 break;
255 break;
258 break;
261 break;
264 break;
267 break;
270 break;
273 break;
276 break;
279 break;
282 break;
285 break;
288 break;
291 break;
294 break;
297 break;
300 break;
303 break;
306 break;
309 break;
312 break;
315 break;
316
317/* ShutDown items */
320 break;
323 break;
326 break;
329 break;
332 break;
335 break;
338 break;
341 break;
344 break;
345
346 case ID_HELP_ABOUT:
347 OnAbout();
348 break;
349 case ID_FILE_EXIT:
350 EndDialog(hDlg, IDOK);
351 break;
352 }
353 break;
354
355 case WM_ONTRAYICON:
356 switch(lParam)
357 {
358 case WM_RBUTTONDOWN:
359 {
360 POINT pt;
361 BOOL OnTop;
362 HMENU hMenu, hPopupMenu;
363
365
367
369 hPopupMenu = GetSubMenu(hMenu, 0);
370
372 DeleteMenu(hPopupMenu, ID_RESTORE, MF_BYCOMMAND);
373 else
374 SetMenuDefaultItem(hPopupMenu, ID_RESTORE, FALSE);
375
376 if(OnTop)
378 else
380
382 TrackPopupMenuEx(hPopupMenu, 0, pt.x, pt.y, hMainWnd, NULL);
383
384 DestroyMenu(hMenu);
385 break;
386 }
387 case WM_LBUTTONDBLCLK:
389 break;
390 }
391 break;
392
393 case WM_NOTIFY:
394 pnmh = (LPNMHDR)lParam;
395 if ((pnmh->hwndFrom == hTabWnd) &&
396 (pnmh->idFrom == IDC_TAB))
397 {
398 switch (pnmh->code)
399 {
400 case TCN_SELCHANGE:
402 break;
403 case TCN_KEYDOWN:
405 break;
406 case NM_CLICK:
408 break;
409 }
410 }
411 break;
412
413 case WM_SIZING:
414 /* Make sure the user is sizing the dialog */
415 /* in an acceptable range */
416 pRC = (LPRECT)lParam;
417 if ((wParam == WMSZ_LEFT) || (wParam == WMSZ_TOPLEFT) || (wParam == WMSZ_BOTTOMLEFT)) {
418 /* If the width is too small enlarge it to the minimum */
419 if (nMinimumWidth > (pRC->right - pRC->left))
420 pRC->left = pRC->right - nMinimumWidth;
421 } else {
422 /* If the width is too small enlarge it to the minimum */
423 if (nMinimumWidth > (pRC->right - pRC->left))
424 pRC->right = pRC->left + nMinimumWidth;
425 }
426 if ((wParam == WMSZ_TOP) || (wParam == WMSZ_TOPLEFT) || (wParam == WMSZ_TOPRIGHT)) {
427 /* If the height is too small enlarge it to the minimum */
428 if (nMinimumHeight > (pRC->bottom - pRC->top))
429 pRC->top = pRC->bottom - nMinimumHeight;
430 } else {
431 /* If the height is too small enlarge it to the minimum */
432 if (nMinimumHeight > (pRC->bottom - pRC->top))
433 pRC->bottom = pRC->top + nMinimumHeight;
434 }
435 return TRUE;
436 break;
437
438 case WM_SIZE:
439 /* Handle the window sizing in it's own function */
441 break;
442
443 case WM_MOVE:
444 /* Handle the window moving in it's own function */
446 break;
447
448 case WM_DESTROY:
449 ShowWindow(hDlg, SW_HIDE);
451 wp.length = sizeof(WINDOWPLACEMENT);
452 GetWindowPlacement(hDlg, &wp);
457 if (IsZoomed(hDlg) || (wp.flags & WPF_RESTORETOMAXIMIZED))
459 else
461 /* Get rid of the allocated command line cache, if any */
463 if (hWindowMenu)
465 return DefWindowProcW(hDlg, message, wParam, lParam);
466
467 case WM_TIMER:
468 /* Refresh the performance data */
474 break;
475
476 case WM_MENUSELECT:
478 break;
479
481 /* Forward WM_SYSCOLORCHANGE to common controls */
485 break;
486 }
487
488 return 0;
489}
490
492{
493 SetBkColor(hDC, clr);
494 ExtTextOutW(hDC, 0, 0, ETO_OPAQUE, lpRect, NULL, 0, NULL);
495}
496
498{
499 /* Setup update speed (pause=fall down) */
502 SetTimer(hWnd, 1, 500, NULL);
503 break;
505 SetTimer(hWnd, 1, 2000, NULL);
506 break;
508 SetTimer(hWnd, 1, 4000, NULL);
509 break;
510 }
511}
512
514{
515 HMENU hMenu;
516 HMENU hEditMenu;
517 HMENU hViewMenu;
518 HMENU hShutMenu;
519 HMENU hUpdateSpeedMenu;
520 HMENU hCPUHistoryMenu;
521 int nActivePage;
522 int nParts[3];
523 RECT rc;
524 WCHAR szTemp[256];
525 WCHAR szLogOffItem[MAX_PATH];
526 LPWSTR lpUserName;
527 TCITEM item;
528 DWORD len = 0;
529
531
532 /* Initialize the Windows Common Controls DLL */
534
535 /* Get the minimum window sizes */
536 GetWindowRect(hWnd, &rc);
537 nMinimumWidth = (rc.right - rc.left);
538 nMinimumHeight = (rc.bottom - rc.top);
539
540 /* Create the status bar */
542 if(!hStatusWnd)
543 return FALSE;
544
545 /* Create the status bar panes */
546 nParts[0] = STATUS_SIZE1;
547 nParts[1] = STATUS_SIZE2;
548 nParts[2] = STATUS_SIZE3;
550
551 /* Create tab pages */
553#if 1
557#else
561#endif
562
563 /* Insert tabs */
564 LoadStringW(hInst, IDS_TAB_APPS, szTemp, 256);
565 memset(&item, 0, sizeof(TCITEM));
566 item.mask = TCIF_TEXT;
567 item.pszText = szTemp;
569 LoadStringW(hInst, IDS_TAB_PROCESSES, szTemp, 256);
570 memset(&item, 0, sizeof(TCITEM));
571 item.mask = TCIF_TEXT;
572 item.pszText = szTemp;
575 memset(&item, 0, sizeof(TCITEM));
576 item.mask = TCIF_TEXT;
577 item.pszText = szTemp;
579
580 /* Size everything correctly */
581 GetClientRect(hWnd, &rc);
582 nOldWidth = rc.right;
583 nOldHeight = rc.bottom;
584 /* nOldStartX = rc.left; */
585 /*nOldStartY = rc.top; */
586
587#define PAGE_OFFSET_LEFT 17
588#define PAGE_OFFSET_TOP 72
589#define PAGE_OFFSET_WIDTH (PAGE_OFFSET_LEFT*2)
590#define PAGE_OFFSET_HEIGHT (PAGE_OFFSET_TOP+32)
591
592 if ((TaskManagerSettings.Left != 0) ||
593 (TaskManagerSettings.Top != 0) ||
594 (TaskManagerSettings.Right != 0) ||
596 {
598#ifdef __GNUC__TEST__
602#endif
603 }
606
607 /* Set the always on top style */
608 hMenu = GetMenu(hWnd);
609 hEditMenu = GetSubMenu(hMenu, 1);
610 hViewMenu = GetSubMenu(hMenu, 2);
611 hShutMenu = GetSubMenu(hMenu, 4);
612 hUpdateSpeedMenu = GetSubMenu(hViewMenu, 1);
613 hCPUHistoryMenu = GetSubMenu(hViewMenu, 7);
614
615 /* Check or uncheck the always on top menu item */
619 } else {
622 }
623
624 /* Check or uncheck the minimize on use menu item */
627 else
629
630 /* Check or uncheck the hide when minimized menu item */
633 else
635
636 /* Check or uncheck the show 16-bit tasks menu item */
639 else
641
642 /* Set the view mode */
644
647 else
649
651
654 else
656
658 TabCtrl_SetCurFocus/*Sel*/(hTabWnd, 0);
659 TabCtrl_SetCurFocus/*Sel*/(hTabWnd, 1);
660 TabCtrl_SetCurFocus/*Sel*/(hTabWnd, 2);
661 TabCtrl_SetCurFocus/*Sel*/(hTabWnd, nActivePage);
662
663 /* Set the username in the "Log Off %s" item of the Shutdown menu */
664
665 /* 1- Get the menu item text and store it temporarily */
666 GetMenuStringW(hShutMenu, ID_SHUTDOWN_LOGOFF, szTemp, 256, MF_BYCOMMAND);
667
668 /* 2- Retrieve the username length first, then allocate a buffer for it and call it again */
670 {
671 lpUserName = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len * sizeof(WCHAR));
672 if (lpUserName && GetUserNameW(lpUserName, &len))
673 {
674 _snwprintf(szLogOffItem, _countof(szLogOffItem), szTemp, lpUserName);
675 szLogOffItem[_countof(szLogOffItem) - 1] = UNICODE_NULL;
676 }
677 else
678 {
679 _snwprintf(szLogOffItem, _countof(szLogOffItem), szTemp, L"n/a");
680 }
681
682 if (lpUserName) HeapFree(GetProcessHeap(), 0, lpUserName);
683 }
684 else
685 {
686 _snwprintf(szLogOffItem, _countof(szLogOffItem), szTemp, L"n/a");
687 }
688
689 /* 3- Set the menu item text to its formatted counterpart */
691
692 /* Setup update speed */
694
695 /*
696 * Refresh the performance data
697 * Sample it twice so we can establish
698 * the delta values & cpu usage
699 */
702
706
708
709 return TRUE;
710}
711
712/* OnMove()
713 * This function handles all the moving events for the application
714 * It moves every child window that needs moving
715 */
716void OnMove( WPARAM nType, int cx, int cy )
717{
718#ifdef __GNUC__TEST__
722#endif
723}
724
725/* OnSize()
726 * This function handles all the sizing events for the application
727 * It re-sizes every window, and child window that needs re-sizing
728 */
729void OnSize( WPARAM nType, int cx, int cy )
730{
731 int nParts[3];
732 int nXDifference;
733 int nYDifference;
734 RECT rc;
735
736 if (nType == SIZE_MINIMIZED)
737 {
740 return;
741 }
742
743 nXDifference = cx - nOldWidth;
744 nYDifference = cy - nOldHeight;
745 nOldWidth = cx;
746 nOldHeight = cy;
747
748 /* Update the status bar size */
751
752 /* Update the status bar pane sizes */
753 nParts[0] = STATUS_SIZE1;
754 nParts[1] = STATUS_SIZE2;
755 nParts[2] = cx;
757
758 /* Resize the tab control */
760 cx = (rc.right - rc.left) + nXDifference;
761 cy = (rc.bottom - rc.top) + nYDifference;
763
764 /* Resize the application page */
766 cx = (rc.right - rc.left) + nXDifference;
767 cy = (rc.bottom - rc.top) + nYDifference;
769
770 /* Resize the process page */
772 cx = (rc.right - rc.left) + nXDifference;
773 cy = (rc.bottom - rc.top) + nYDifference;
775
776 /* Resize the performance page */
778 cx = (rc.right - rc.left) + nXDifference;
779 cy = (rc.bottom - rc.top) + nYDifference;
781}
782
783void LoadSettings(void)
784{
785 HKEY hKey;
786 WCHAR szSubKey[] = L"Software\\ReactOS\\TaskManager";
787 int i;
789
790 /* Window size & position settings */
796
797 /* Tab settings */
799
800 /* Options menu settings */
805
806 /* Update speed settings */
808
809 /* Applications page settings */
811
812 /* Processes page settings */
813 TaskManagerSettings.ShowProcessesFromAllUsers = FALSE; /* It's the default */
814
815 for (i = 0; i < COLUMN_NMAX; i++) {
819 }
820
823
824 /* Performance page settings */
827
828 /* Open the key */
830 return;
831 /* Read the settings */
834
835 /*
836 * ATM, the 'ImageName' column is always visible
837 * (and grayed in configuration dialog)
838 * This will avoid troubles if the registry gets corrupted.
839 */
840 TaskManagerSettings.Column_ImageName = TRUE;
841
842 /* Close the key */
844}
845
846void SaveSettings(void)
847{
848 HKEY hKey;
849 WCHAR szSubKey[] = L"Software\\ReactOS\\TaskManager";
850
851 /* Open (or create) the key */
853 return;
854 /* Save the settings */
856 /* Close the key */
858}
859
861{
862 BOOL OnTop;
863
865
869}
870
871void TaskManager_OnMenuSelect(HWND hWnd, UINT nItemID, UINT nFlags, HMENU hSysMenu)
872{
873 WCHAR str[100] = L"";
874
875 /*
876 * Reset the status bar if we close the current menu, or
877 * we open the system menu or hover above a menu separator.
878 * Adapted from comctl32!MenuHelp().
879 */
880 if ((LOWORD(nFlags) == 0xFFFF && hSysMenu == NULL) ||
881 (nFlags & (MF_SEPARATOR | MF_SYSMENU)))
882 {
883 /* Set the status bar for multiple-parts output */
886
887 /* Trigger update of status bar columns and performance page asynchronously */
889 return;
890 }
891
892 /* Otherwise, retrieve the appropriate menu hint string */
893 if (LoadStringW(hInst, nItemID, str, _countof(str)))
894 {
895 /* First newline terminates actual string */
896 LPWSTR lpsz = wcschr(str, '\n');
897 if (lpsz != NULL)
898 *lpsz = '\0';
899 }
900
901 /* Set the status bar for single-part output, if needed... */
902 if (!bTrackMenu)
905
906 /* ... and display the menu hint */
908}
909
911{
912 HMENU hMenu;
913 HMENU hViewMenu;
914 HMENU hUpdateSpeedMenu;
915
916 hMenu = GetMenu(hMainWnd);
917 hViewMenu = GetSubMenu(hMenu, 2);
918 hUpdateSpeedMenu = GetSubMenu(hViewMenu, 1);
919
922
924
926}
927
929{
930 int i;
931 HMENU hMenu;
932 HMENU hOptionsMenu;
933 HMENU hViewMenu;
934 HMENU hSubMenu;
935 WCHAR szTemp[256];
936 SYSTEM_INFO sysInfo;
937
938 hMenu = GetMenu(hMainWnd);
939 hViewMenu = GetSubMenu(hMenu, 2);
940 hOptionsMenu = GetSubMenu(hMenu, 1);
942 for (i = GetMenuItemCount(hViewMenu) - 1; i > 2; i--) {
943 hSubMenu = GetSubMenu(hViewMenu, i);
944 if (hSubMenu)
945 DestroyMenu(hSubMenu);
946 RemoveMenu(hViewMenu, i, MF_BYPOSITION);
947 }
948 RemoveMenu(hOptionsMenu, 3, MF_BYPOSITION);
949 if (hWindowMenu)
952 case 0:
957
959 AppendMenuW(hViewMenu, MF_STRING, ID_VIEW_LARGE, szTemp);
960
962 AppendMenuW(hViewMenu, MF_STRING, ID_VIEW_SMALL, szTemp);
963
964 LoadStringW(hInst, IDS_MENU_DETAILS, szTemp, 256);
965 AppendMenuW(hViewMenu, MF_STRING, ID_VIEW_DETAILS, szTemp);
966
967 if (GetMenuItemCount(hMenu) <= 5) {
969
970 LoadStringW(hInst, IDS_MENU_WINDOWS, szTemp, 256);
972
974 }
976
977 /*
978 * Give the application list control focus
979 */
982 break;
983
984 case 1:
989
991 AppendMenuW(hViewMenu, MF_STRING, ID_VIEW_SELECTCOLUMNS, szTemp);
992
993 LoadStringW(hInst, IDS_MENU_16BITTASK, szTemp, 256);
994 AppendMenuW(hOptionsMenu, MF_STRING, ID_OPTIONS_SHOW16BITTASKS, szTemp);
995
998 if (GetMenuItemCount(hMenu) > 5)
999 {
1000 DeleteMenu(hMenu, 3, MF_BYPOSITION);
1002 }
1003 /*
1004 * Give the process list control focus
1005 */
1006 if (!bWasKeyboardInput)
1008 break;
1009
1010 case 2:
1015 if (GetMenuItemCount(hMenu) > 5) {
1016 DeleteMenu(hMenu, 3, MF_BYPOSITION);
1018 }
1019
1020 GetSystemInfo(&sysInfo);
1021
1022 /* Hide CPU graph options on single CPU systems */
1023 if (sysInfo.dwNumberOfProcessors > 1)
1024 {
1025 hSubMenu = CreatePopupMenu();
1026
1029
1032
1033 LoadStringW(hInst, IDS_MENU_CPUHISTORY, szTemp, 256);
1034 AppendMenuW(hViewMenu, MF_STRING|MF_POPUP, (UINT_PTR) hSubMenu, szTemp);
1035
1038 else
1040 }
1041
1043 AppendMenuW(hViewMenu, MF_STRING, ID_VIEW_SHOWKERNELTIMES, szTemp);
1044
1047 else
1049
1050 /*
1051 * Give the tab control focus
1052 */
1053 if (!bWasKeyboardInput)
1055 break;
1056 }
1057}
1058
1060{
1061 UINT positive = ((Type & 0xF) <= MB_OKCANCEL ? IDOK : IDYES);
1062 if (GetKeyState(VK_SHIFT) < 0)
1063 return TRUE;
1064 return (MessageBoxW(hWnd, Text, Title, Type) == positive);
1065}
1066
1068{
1069 LPWSTR lpMessageBuffer;
1070
1072 NULL,
1073 dwError,
1075 (LPWSTR)&lpMessageBuffer,
1076 0, NULL) != 0)
1077 {
1078 MessageBoxW(hMainWnd, lpMessageBuffer, NULL, MB_OK | MB_ICONERROR);
1079 if (lpMessageBuffer) LocalFree(lpMessageBuffer);
1080 }
1081}
1082
1084{
1085 DWORD dwRet;
1086 LPWSTR lpszTemp = NULL;
1087
1089 NULL,
1090 GetLastError(),
1092 (LPWSTR)&lpszTemp,
1093 0,
1094 NULL );
1095
1096 /* supplied buffer is not long enough */
1097 if (!dwRet || ( (long)dwSize < (long)dwRet+14)) {
1098 lpszBuf[0] = L'\0';
1099 } else {
1100 lpszTemp[lstrlenW(lpszTemp)-2] = L'\0'; /*remove cr and newline character */
1101 wsprintfW(lpszBuf, L"%s (0x%x)", lpszTemp, (int)GetLastError());
1102 }
1103 if (lpszTemp) {
1104 LocalFree((HLOCAL)lpszTemp);
1105 }
1106 return lpszBuf;
1107}
1108
1110{
1111 DWORD dwExitCodeThread = 0;
1112
1113 if (*hThread != NULL) {
1114 PostThreadMessage(dwThread,WM_QUIT,0,0);
1115 for (;;) {
1116 MSG msg;
1117
1119 break;
1120 while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
1123 }
1124 }
1125 GetExitCodeThread(*hThread, &dwExitCodeThread);
1127 *hThread = NULL;
1128 }
1129 return dwExitCodeThread;
1130}
1131
static HDC hDC
Definition: 3dtext.c:33
Type
Definition: Type.h:7
void ProcessPage_OnSetAffinity(void)
Definition: affinity.c:26
void RefreshApplicationPage(void)
Definition: applpage.c:223
void ApplicationPage_OnEndTask(void)
Definition: applpage.c:827
HWND hApplicationPage
Definition: applpage.c:20
void ApplicationPage_OnWindowsCascade(void)
Definition: applpage.c:751
void ApplicationPage_OnWindowsBringToFront(void)
Definition: applpage.c:780
void ApplicationPage_OnWindowsMinimize(void)
Definition: applpage.c:709
void ApplicationPage_OnView(DWORD dwMode)
Definition: applpage.c:664
void ApplicationPage_OnWindowsTile(DWORD dwMode)
Definition: applpage.c:678
INT_PTR CALLBACK ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: applpage.c:89
HWND hApplicationPageListCtrl
Definition: applpage.c:21
void ApplicationPage_OnGotoProcess(void)
Definition: applpage.c:851
void ApplicationPage_OnSwitchTo(void)
Definition: applpage.c:802
void ApplicationPage_OnWindowsMaximize(void)
Definition: applpage.c:730
#define msg(x)
Definition: auth_time.c:54
HWND hWnd
Definition: settings.c:17
#define IDS_APP_TITLE
Definition: resource.h:10
#define IDC_TAB
Definition: resource.h:12
#define ID_VIEW_LARGE
Definition: resource.h:33
#define ID_VIEW_SMALL
Definition: resource.h:34
#define ID_VIEW_DETAILS
Definition: resource.h:36
#define ID_VIEW_REFRESH
Definition: resource.h:56
#define ID_HELP_ABOUT
Definition: resource.h:75
#define ID_FILE_EXIT
Definition: resource.h:46
#define ID_FILE_NEW
Definition: resource.h:40
void OnAbout(void)
Definition: about.c:10
void ProcessPage_OnDebug(void)
Definition: debug.c:11
#define ID_APPLICATION_PAGE_SWITCHTO
Definition: resource.h:170
#define IDS_MENU_SELECTCOLUMNS
Definition: resource.h:234
#define IDD_APPLICATION_PAGE
Definition: resource.h:15
#define IDD_PERFORMANCE_PAGE
Definition: resource.h:22
#define ID_PROCESS_PAGE_SETPRIORITY_NORMAL
Definition: resource.h:184
#define IDS_TAB_APPS
Definition: resource.h:202
#define ID_PROCESS_PAGE_PROPERTIES
Definition: resource.h:187
#define ID_SHUTDOWN_REBOOT
Definition: resource.h:193
#define ID_SHUTDOWN_EJECT_COMPUTER
Definition: resource.h:198
#define ID_WINDOWS_MINIMIZE
Definition: resource.h:156
#define ID_SHUTDOWN_SWITCHUSER
Definition: resource.h:195
#define ID_VIEW_SHOWKERNELTIMES
Definition: resource.h:166
#define ID_PROCESS_PAGE_SETPRIORITY_REALTIME
Definition: resource.h:181
#define IDS_MENU_SHOWKERNELTIMES
Definition: resource.h:243
#define ID_RESTORE
Definition: resource.h:173
#define ID_OPTIONS_ALWAYSONTOP
Definition: resource.h:143
#define ID_VIEW_UPDATESPEED_PAUSED
Definition: resource.h:153
#define ID_WINDOWS_MAXIMIZE
Definition: resource.h:157
#define IDS_MENU_DETAILS
Definition: resource.h:239
#define ID_OPTIONS_MINIMIZEONUSE
Definition: resource.h:144
#define IDS_TAB_PERFORMANCE
Definition: resource.h:204
#define ID_OPTIONS_SHOW16BITTASKS
Definition: resource.h:163
#define IDS_TAB_PROCESSES
Definition: resource.h:203
#define IDR_WINDOWSMENU
Definition: resource.h:23
#define ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU
Definition: resource.h:168
#define ID_PROCESS_PAGE_ENDPROCESS
Definition: resource.h:177
#define ID_WINDOWS_BRINGTOFRONT
Definition: resource.h:159
#define ID_WINDOWS_TILEHORIZONTALLY
Definition: resource.h:154
#define IDD_PROCESS_PAGE
Definition: resource.h:21
#define ID_APPLICATION_PAGE_ENDTASK
Definition: resource.h:174
#define IDS_MENU_CPUHISTORY
Definition: resource.h:242
#define ID_PROCESS_PAGE_SETPRIORITY_BELOWNORMAL
Definition: resource.h:185
#define ID_VIEW_UPDATESPEED_HIGH
Definition: resource.h:150
#define ID_SHUTDOWN_LOGOFF
Definition: resource.h:194
#define ID_OPTIONS_HIDEWHENMINIMIZED
Definition: resource.h:145
#define IDS_MENU_SMALLICONS
Definition: resource.h:238
#define IDS_MENU_ONEGRAPHPERCPU
Definition: resource.h:241
#define IDR_TRAY_POPUP
Definition: resource.h:29
#define ID_SHUTDOWN_LOCKCOMPUTER
Definition: resource.h:196
#define IDI_TASKMANAGER
Definition: resource.h:24
#define ID_SHUTDOWN_DISCONNECT
Definition: resource.h:197
#define ID_SHUTDOWN_STANDBY
Definition: resource.h:190
#define ID_VIEW_CPUHISTORY_ONEGRAPHALL
Definition: resource.h:167
#define IDS_MENU_ONEGRAPHALLCPUS
Definition: resource.h:240
#define ID_PROCESS_PAGE_DEBUG
Definition: resource.h:179
#define ID_WINDOWS_TILEVERTICALLY
Definition: resource.h:155
#define ID_PROCESS_PAGE_OPENFILELOCATION
Definition: resource.h:188
#define ID_VIEW_UPDATESPEED_NORMAL
Definition: resource.h:151
#define IDS_MENU_WINDOWS
Definition: resource.h:236
#define ID_PROCESS_PAGE_ENDPROCESSTREE
Definition: resource.h:178
#define IDD_TASKMGR_DIALOG
Definition: resource.h:11
#define ID_VIEW_UPDATESPEED_LOW
Definition: resource.h:152
#define ID_PROCESS_PAGE_SETAFFINITY
Definition: resource.h:180
#define ID_SHUTDOWN_POWEROFF
Definition: resource.h:192
#define IDS_MENU_16BITTASK
Definition: resource.h:235
#define ID_APPLICATION_PAGE_GOTOPROCESS
Definition: resource.h:175
#define ID_PROCESS_PAGE_SETPRIORITY_LOW
Definition: resource.h:186
#define ID_SHUTDOWN_HIBERNATE
Definition: resource.h:191
#define ID_VIEW_SELECTCOLUMNS
Definition: resource.h:165
#define ID_PROCESS_PAGE_SETPRIORITY_HIGH
Definition: resource.h:182
#define ID_WINDOWS_CASCADE
Definition: resource.h:158
#define ID_HELP_TOPICS
Definition: resource.h:160
#define IDS_MENU_LARGEICONS
Definition: resource.h:237
#define ID_PROCESS_PAGE_SETPRIORITY_ABOVENORMAL
Definition: resource.h:183
void TaskManager_OnFileNew(void)
Definition: run.c:11
VOID ShutDown_Reboot(VOID)
Definition: shutdown.c:128
VOID ShutDown_StandBy(VOID)
Definition: shutdown.c:46
VOID ShutDown_SwitchUser(VOID)
Definition: shutdown.c:162
VOID ShutDown_EjectComputer(VOID)
Definition: shutdown.c:179
VOID ShutDown_Hibernate(VOID)
Definition: shutdown.c:73
VOID ShutDown_PowerOff(VOID)
Definition: shutdown.c:100
VOID ShutDown_LogOffUser(VOID)
Definition: shutdown.c:155
VOID ShutDown_Disconnect(VOID)
Definition: shutdown.c:174
VOID ShutDown_LockComputer(VOID)
Definition: shutdown.c:167
#define RegCloseKey(hKey)
Definition: registry.h:49
HINSTANCE hInstance
Definition: charmap.c:19
const PresetColumnEntry ColumnPresets[COLUMN_NMAX]
Definition: column.c:16
void ProcessPage_OnViewSelectColumns(void)
Definition: column.c:130
#define COLUMN_IMAGENAME
Definition: column.h:11
#define COLUMN_NMAX
Definition: column.h:37
WPARAM wParam
Definition: combotst.c:138
char * Text
Definition: combotst.c:136
LPARAM lParam
Definition: combotst.c:139
VOID WINAPI InitCommonControls(void)
Definition: commctrl.c:863
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10
#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
#define APIENTRY
Definition: api.h:79
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
Definition: reg.c:1096
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
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 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 GetUserNameW(LPWSTR lpszName, LPDWORD lpSize)
Definition: misc.c:291
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
static const WCHAR Title[]
Definition: oid.c:1259
#define CloseHandle
Definition: compat.h:739
#define wcschr
Definition: compat.h:17
#define GetProcessHeap()
Definition: compat.h:736
HANDLE HWND
Definition: compat.h:19
#define GetProcAddress(x, y)
Definition: compat.h:753
#define HeapAlloc
Definition: compat.h:733
#define FreeLibrary(x)
Definition: compat.h:748
#define GetCurrentProcess()
Definition: compat.h:759
#define MAX_PATH
Definition: compat.h:34
#define HeapFree(x, y, z)
Definition: compat.h:735
#define CALLBACK
Definition: compat.h:35
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
#define lstrlenW
Definition: compat.h:750
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
Definition: loader.c:111
HANDLE WINAPI OpenProcess(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwProcessId)
Definition: proc.c:1227
BOOL WINAPI SetProcessShutdownParameters(IN DWORD dwLevel, IN DWORD dwFlags)
Definition: proc.c:949
BOOL WINAPI SetPriorityClass(IN HANDLE hProcess, IN DWORD dwPriorityClass)
Definition: proc.c:1692
VOID WINAPI GetSystemInfo(IN LPSYSTEM_INFO lpSystemInfo)
Definition: sysinfo.c:143
BOOL WINAPI GetExitCodeThread(IN HANDLE hThread, OUT LPDWORD lpExitCode)
Definition: thread.c:541
DWORD WINAPI FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, __ms_va_list *args)
Definition: format_msg.c:583
#define pt(x, y)
Definition: drawing.c:79
void ProcessPage_OnEndProcessTree(void)
Definition: endproc.c:146
void ProcessPage_OnEndProcess(void)
Definition: endproc.c:15
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
FxAutoRegKey hKey
GLenum GLsizei len
Definition: glext.h:6722
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
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1594
_In_ BOOL _In_ HANDLE hProcess
Definition: mapping.h:71
#define ERROR_ALREADY_EXISTS
Definition: disk.h:80
int _snwprintf(wchar_t *buffer, size_t count, const wchar_t *format,...)
#define SB_SIMPLEID
Definition: precomp.h:15
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
HDC hdc
Definition: main.c:9
HANDLE hMutex
Definition: mutex.c:11
static HDC
Definition: imagelist.c:92
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
HANDLE hThread
Definition: wizard.c:28
#define REG_BINARY
Definition: nt_native.h:1496
#define KEY_READ
Definition: nt_native.h:1023
#define PROCESS_ALL_ACCESS
Definition: nt_native.h:1324
#define REG_OPTION_NON_VOLATILE
Definition: nt_native.h:1057
#define KEY_WRITE
Definition: nt_native.h:1031
#define DWORD
Definition: nt_native.h:44
#define UNICODE_NULL
#define L(x)
Definition: ntvdm.h:50
void TaskManager_OnOptionsAlwaysOnTop(void)
Definition: optnmenu.c:10
void TaskManager_OnOptionsHideWhenMinimized(void)
Definition: optnmenu.c:59
void TaskManager_OnOptionsShow16BitTasks(void)
Definition: optnmenu.c:82
void TaskManager_OnOptionsMinimizeOnUse(void)
Definition: optnmenu.c:36
#define LOWORD(l)
Definition: pedump.c:82
#define WS_CHILD
Definition: pedump.c:617
#define WS_VISIBLE
Definition: pedump.c:620
#define WS_EX_TOPMOST
Definition: pedump.c:647
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
void PerfDataDeallocCommandLineCache()
Definition: perfdata.c:633
BOOL PerfDataInitialize(void)
Definition: perfdata.c:49
void PerfDataRefresh(void)
Definition: perfdata.c:158
void PerfDataUninitialize(void)
Definition: perfdata.c:70
void PerformancePage_OnViewShowKernelTimes(void)
Definition: perfpage.c:453
INT_PTR CALLBACK PerformancePageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: perfpage.c:98
void PerformancePage_OnViewCPUHistoryOneGraphPerCPU(void)
Definition: perfpage.c:493
void PerformancePage_OnViewCPUHistoryOneGraphAll(void)
Definition: perfpage.c:479
void RefreshPerformancePage(void)
Definition: perfpage.c:288
HWND hPerformancePage
Definition: perfpage.c:14
void DoSetPriority(DWORD priority)
Definition: priority.c:11
void ProcessPage_OnOpenFileLocation(void)
Definition: procpage.c:1220
INT_PTR CALLBACK ProcessPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: procpage.c:121
HWND hProcessPage
Definition: procpage.c:26
HWND hProcessPageHeaderCtrl
Definition: procpage.c:29
void RefreshProcessPage(void)
Definition: procpage.c:448
void ProcessPage_OnProperties(void)
Definition: procpage.c:1181
HWND hProcessPageListCtrl
Definition: procpage.c:28
_Out_opt_ int _Out_opt_ int * cy
Definition: commctrl.h:586
#define SB_SIMPLE
Definition: commctrl.h:1958
#define TabCtrl_GetCurSel(hwnd)
Definition: commctrl.h:4063
#define CreateStatusWindow
Definition: commctrl.h:1933
#define SBT_NOBORDERS
Definition: commctrl.h:1971
_Out_opt_ int * cx
Definition: commctrl.h:585
#define TCN_KEYDOWN
Definition: commctrl.h:4118
#define NM_CLICK
Definition: commctrl.h:130
#define TCITEM
Definition: commctrl.h:4029
#define TabCtrl_InsertItem(hwnd, iItem, pitem)
Definition: commctrl.h:4051
#define TCN_SELCHANGE
Definition: commctrl.h:4132
#define SB_SETTEXT
Definition: commctrl.h:1949
#define SB_SETPARTS
Definition: commctrl.h:1954
#define TCIF_TEXT
Definition: commctrl.h:3971
#define TabCtrl_SetCurFocus(hwnd, i)
Definition: commctrl.h:4102
#define WM_NOTIFY
Definition: richedit.h:61
const WCHAR * str
#define LANG_NEUTRAL
Definition: nls.h:22
#define MAKELANGID(p, s)
Definition: nls.h:15
#define SUBLANG_DEFAULT
Definition: nls.h:168
#define memset(x, y, z)
Definition: compat.h:39
#define _countof(array)
Definition: sndvol32.h:68
BOOL bDefaults
Definition: column.h:62
int ColumnSizeArray[COLUMN_NMAX]
Definition: taskmgr.h:49
BOOL HideWhenMinimized
Definition: taskmgr.h:36
BOOL ShowProcessesFromAllUsers
Definition: taskmgr.h:46
int ColumnOrderArray[COLUMN_NMAX]
Definition: taskmgr.h:48
BOOL CPUHistory_OneGraphPerCPU
Definition: taskmgr.h:54
BOOL Columns[COLUMN_NMAX]
Definition: taskmgr.h:47
DWORD dwNumberOfProcessors
Definition: winbase.h:1177
$ULONG PrivilegeCount
Definition: setypes.h:1023
LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]
Definition: setypes.h:1024
RECT rcNormalPosition
Definition: winuser.h:3295
Definition: tftpd.h:60
Definition: unary.h:15
UINT_PTR idFrom
Definition: winuser.h:3158
UINT code
Definition: winuser.h:3159
HWND hwndFrom
Definition: winuser.h:3157
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexW(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL, IN BOOL bInitialOwner, IN LPCWSTR lpName OPTIONAL)
Definition: synch.c:576
HRESULT(WINAPI * ETDTProc)(HWND, DWORD)
Definition: taskmgr.c:56
BOOL bWasKeyboardInput
Definition: taskmgr.c:35
INT_PTR CALLBACK TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: taskmgr.c:183
int nOldWidth
Definition: taskmgr.c:31
#define ETDT_ENABLETAB
Definition: taskmgr.c:53
DWORD EndLocalThread(HANDLE *hThread, DWORD dwThread)
Definition: taskmgr.c:1109
void TaskManager_OnRestoreMainWindow(void)
Definition: taskmgr.c:860
int nOldHeight
Definition: taskmgr.c:32
int nMinimumWidth
Definition: taskmgr.c:28
HWND hStatusWnd
Definition: taskmgr.c:23
BOOL OnCreate(HWND hWnd)
Definition: taskmgr.c:513
void TaskManager_OnMenuSelect(HWND hWnd, UINT nItemID, UINT nFlags, HMENU hSysMenu)
Definition: taskmgr.c:871
#define PAGE_OFFSET_LEFT
HINSTANCE hInst
Definition: taskmgr.c:20
BOOL EnableDialogTheme(HWND hwnd)
Definition: taskmgr.c:61
#define PAGE_OFFSET_WIDTH
HWND hMainWnd
Definition: taskmgr.c:22
int nMinimumHeight
Definition: taskmgr.c:29
#define PAGE_OFFSET_TOP
int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
Definition: taskmgr.c:94
void TaskManager_OnViewUpdateSpeed(DWORD dwSpeed)
Definition: taskmgr.c:910
void SaveSettings(void)
Definition: taskmgr.c:846
TASKMANAGER_SETTINGS TaskManagerSettings
Definition: taskmgr.c:37
void OnMove(WPARAM nType, int cx, int cy)
Definition: taskmgr.c:716
void OnSize(WPARAM nType, int cx, int cy)
Definition: taskmgr.c:729
VOID ShowWin32Error(DWORD dwError)
Definition: taskmgr.c:1067
#define PAGE_OFFSET_HEIGHT
BOOL bTrackMenu
Definition: taskmgr.c:34
static void SetUpdateSpeed(HWND hWnd)
Definition: taskmgr.c:497
#define STATUS_WINDOW
Definition: taskmgr.c:17
void LoadSettings(void)
Definition: taskmgr.c:783
void FillSolidRect(HDC hDC, LPCRECT lpRect, COLORREF clr)
Definition: taskmgr.c:491
HWND hTabWnd
Definition: taskmgr.c:24
BOOL ConfirmMessageBox(HWND hWnd, LPCWSTR Text, LPCWSTR Title, UINT Type)
Definition: taskmgr.c:1059
void TaskManager_OnTabWndSelChange(void)
Definition: taskmgr.c:928
HMENU hWindowMenu
Definition: taskmgr.c:26
LPWSTR GetLastErrorText(LPWSTR lpszBuf, DWORD dwSize)
Definition: taskmgr.c:1083
#define STATUS_SIZE2
Definition: taskmgr.h:18
#define STATUS_SIZE1
Definition: taskmgr.h:17
#define STATUS_SIZE3
Definition: taskmgr.h:19
#define ICON_BIG
Definition: tnclass.cpp:51
BOOL TrayIcon_RemoveIcon(VOID)
Definition: trayicon.c:143
BOOL TrayIcon_UpdateIcon(VOID)
Definition: trayicon.c:158
BOOL TrayIcon_AddIcon(VOID)
Definition: trayicon.c:138
#define WM_ONTRAYICON
Definition: trayicon.h:11
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
int32_t INT_PTR
Definition: typedefs.h:64
unsigned char * LPBYTE
Definition: typedefs.h:53
#define HIWORD(l)
Definition: typedefs.h:247
static ETDTProc fnEnableThemeDialogTexture
Definition: uxthemesupp.c:15
#define LPRECT
Definition: precomp.h:28
#define NORMAL_PRIORITY_CLASS
Definition: winbase.h:181
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define REALTIME_PRIORITY_CLASS
Definition: winbase.h:184
#define BELOW_NORMAL_PRIORITY_CLASS
Definition: winbase.h:190
#define SHUTDOWN_NORETRY
Definition: winbase.h:448
#define HIGH_PRIORITY_CLASS
Definition: winbase.h:183
DWORD WINAPI GetCurrentProcessId(void)
Definition: proc.c:1158
#define FORMAT_MESSAGE_FROM_SYSTEM
Definition: winbase.h:423
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
Definition: winbase.h:419
#define FORMAT_MESSAGE_ARGUMENT_ARRAY
Definition: winbase.h:424
#define WAIT_OBJECT_0
Definition: winbase.h:406
#define IDLE_PRIORITY_CLASS
Definition: winbase.h:182
#define ABOVE_NORMAL_PRIORITY_CLASS
Definition: winbase.h:191
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
LONG_PTR LPARAM
Definition: windef.h:208
UINT_PTR WPARAM
Definition: windef.h:207
int * LPINT
Definition: windef.h:178
DWORD COLORREF
Definition: windef.h:300
#define HRESULT
Definition: msvc.h:7
#define WINAPI
Definition: msvc.h:6
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
Definition: dc.c:999
BOOL WINAPI ExtTextOutW(_In_ HDC hdc, _In_ int x, _In_ int y, _In_ UINT options, _In_opt_ const RECT *lprect, _In_reads_opt_(c) LPCWSTR lpString, _In_ UINT c, _In_reads_opt_(c) const INT *lpDx)
#define ETO_OPAQUE
Definition: wingdi.h:647
#define SE_DEBUG_NAME
Definition: winnt_old.h:385
#define HKEY_CURRENT_USER
Definition: winreg.h:11
HMENU WINAPI CreatePopupMenu(void)
Definition: menu.c:838
#define SW_HIDE
Definition: winuser.h:768
#define SWP_NOACTIVATE
Definition: winuser.h:1242
#define MF_BYCOMMAND
Definition: winuser.h:202
#define WM_SYSCOMMAND
Definition: winuser.h:1741
#define GetWindowLongPtrW
Definition: winuser.h:4829
#define WM_QUIT
Definition: winuser.h:1623
BOOL WINAPI TranslateMessage(_In_ const MSG *)
#define MAKELPARAM(l, h)
Definition: winuser.h:4008
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI SetMenuDefaultItem(_In_ HMENU, _In_ UINT, _In_ UINT)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
int WINAPI GetMenuItemCount(_In_opt_ HMENU)
#define WMSZ_BOTTOMLEFT
Definition: winuser.h:2470
#define HWND_TOPMOST
Definition: winuser.h:1208
#define IDCANCEL
Definition: winuser.h:831
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define FindWindow
Definition: winuser.h:5777
BOOL WINAPI GetWindowPlacement(_In_ HWND, _Inout_ WINDOWPLACEMENT *)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
int WINAPI GetMenuStringW(_In_ HMENU hMenu, _In_ UINT uIDItem, _Out_writes_opt_(cchMax) LPWSTR lpString, _In_ int cchMax, _In_ UINT flags)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define DialogBoxW(i, t, p, f)
Definition: winuser.h:4399
#define WM_SIZE
Definition: winuser.h:1611
BOOL WINAPI InsertMenuW(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
#define WM_LBUTTONDBLCLK
Definition: winuser.h:1778
#define SWP_NOMOVE
Definition: winuser.h:1244
#define WM_COMMAND
Definition: winuser.h:1740
#define MF_STRING
Definition: winuser.h:138
BOOL WINAPI SetForegroundWindow(_In_ HWND)
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
Definition: cursoricon.c:2670
BOOL WINAPI OpenIcon(_In_ HWND)
#define WMSZ_TOP
Definition: winuser.h:2466
BOOL WINAPI DeleteMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
#define MF_CHECKED
Definition: winuser.h:132
#define SWP_NOSIZE
Definition: winuser.h:1245
#define SIZE_MINIMIZED
Definition: winuser.h:2506
#define MF_SYSMENU
Definition: winuser.h:141
#define WM_INITDIALOG
Definition: winuser.h:1739
#define PostThreadMessage
Definition: winuser.h:5833
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1626
BOOL WINAPI TrackPopupMenuEx(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _In_ HWND, _In_opt_ LPTPMPARAMS)
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
#define WMSZ_LEFT
Definition: winuser.h:2464
#define MF_UNCHECKED
Definition: winuser.h:204
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define IDOK
Definition: winuser.h:830
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
DWORD WINAPI CheckMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
#define MB_ICONERROR
Definition: winuser.h:787
#define MB_OKCANCEL
Definition: winuser.h:804
#define WM_RBUTTONDOWN
Definition: winuser.h:1779
BOOL WINAPI IsZoomed(_In_ HWND)
#define WMSZ_TOPLEFT
Definition: winuser.h:2467
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define HWND_TOP
Definition: winuser.h:1207
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
HWND WINAPI SetFocus(_In_opt_ HWND)
#define MF_SEPARATOR
Definition: winuser.h:137
BOOL WINAPI DrawMenuBar(_In_ HWND)
#define WM_TIMER
Definition: winuser.h:1742
#define MF_BYPOSITION
Definition: winuser.h:203
#define WMSZ_TOPRIGHT
Definition: winuser.h:2468
#define PM_REMOVE
Definition: winuser.h:1196
BOOL WINAPI RemoveMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
struct tagNMHDR * LPNMHDR
#define SWP_SHOWWINDOW
Definition: winuser.h:1248
#define SendMessage
Definition: winuser.h:5843
#define PeekMessage
Definition: winuser.h:5830
#define MB_OK
Definition: winuser.h:790
#define CreateDialogW(h, n, w, f)
Definition: winuser.h:4281
BOOL WINAPI CheckMenuRadioItem(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT, _In_ UINT)
BOOL WINAPI DestroyMenu(_In_ HMENU)
#define WM_MOVE
Definition: winuser.h:1610
#define WM_SIZING
Definition: winuser.h:1807
#define LoadString
Definition: winuser.h:5819
#define WPF_RESTORETOMAXIMIZED
Definition: winuser.h:2532
#define SWP_NOOWNERZORDER
Definition: winuser.h:1249
#define VK_SHIFT
Definition: winuser.h:2202
#define SW_SHOW
Definition: winuser.h:775
#define MDITILE_HORIZONTAL
Definition: winuser.h:2188
#define WM_DESTROY
Definition: winuser.h:1609
BOOL WINAPI ModifyMenuW(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
#define DispatchMessage
Definition: winuser.h:5765
#define MDITILE_VERTICAL
Definition: winuser.h:2189
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
HMENU WINAPI LoadMenuW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
#define IDYES
Definition: winuser.h:835
#define SWP_NOZORDER
Definition: winuser.h:1247
#define SW_MAXIMIZE
Definition: winuser.h:772
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
struct _WINDOWPLACEMENT WINDOWPLACEMENT
#define WM_MENUSELECT
Definition: winuser.h:1747
#define SC_RESTORE
Definition: winuser.h:2598
#define HWND_NOTOPMOST
Definition: winuser.h:1206
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
Definition: cursoricon.c:2075
BOOL WINAPI BringWindowToTop(_In_ HWND)
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)
HMENU WINAPI GetMenu(_In_ HWND)
SHORT WINAPI GetKeyState(_In_ int)
BOOL WINAPI AppendMenuW(_In_ HMENU, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
#define GWL_EXSTYLE
Definition: winuser.h:851
#define MF_GRAYED
Definition: winuser.h:129
#define TOKEN_ADJUST_PRIVILEGES
Definition: setypes.h:930
#define TOKEN_QUERY
Definition: setypes.h:928
#define SE_PRIVILEGE_ENABLED
Definition: setypes.h:63
char TCHAR
Definition: xmlstorage.h:189
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185