mirror of
https://github.com/reactos/reactos.git
synced 2024-09-28 05:26:58 +00:00
[0.4.13][TASKMGR] Mainly Graph-stuff backports 2023-10-31
This backports the following commits: 0.4.15-dev-6770-gddd1d19b3f
[TASKMGR] Get rid of cplusplus extern c (#5808) partially 0.4.15-dev-6120-g6e77747b30
[TASKMGR] Simplify tray icon code 0.4.15-dev-6114-g9a6c85f68a
[TASKMGR] Fix PerfDataDeallocCommandLineCache, part of CORE-18014 (unresolved still) 0.4.15-dev-6113-g7989e3f26c
[TASKMGR] GraphCtrl_Dispose: Delete hdcGraph first, part of CORE-18014 (unresolved still) 0.4.15-dev-6112-gdc14a9f6e0
[TASKMGR] GraphCtrl: Use DeleteDC instead of DeleteObject to delete inst->hdcGraph, part of CORE-18014 (unresolved still) partially 0.4.15-dev-4994-g15a0f7adb0
picked a tiny part from PR4657 (I picked only the refactoring to switch-statement, no functional changes. Especially NOT the formatting changes which would require the additional winnls.h-include) 0.4.15-dev-3737-gf8faa0b660
[TASKMGR] Fix a heap corruption bug (#4311), just an addendum to PR4141 which is picked with this backport as well. Older branches were never affected. partially 0.4.15-dev-3514-g1c82bf0324
[TASKMGR] Avoid freezing in getting icons, from (PR4180) CORE17894. I picked only the 1000ms->100ms part and the stripping of WM_QUERYDRAGICON call. Therefore I don't consider CORE17894 as fully covered. 0.4.15-dev-3486-g545e1190f2
[TASKMGR] Avoid hangs as much as possible (#4166) CORE17894 partially 0.4.15-dev-3483-g403222dd4f
[TASKMGR] Preserve graphs history on resizes (#4141). I left aside the structs type renaming and OOM-Handling upon graph creation. Picked all the logical changes though. 0.4.15-dev-3269-g0ed04e3640
[TASKMGR] Make performance graph grid scroll (#3581) 0.4.15-dev-3268-ga4ab9a1e19
[TASKMGR] Formatting only (#3581). Covers the last bits of that PR. Main motivation was getting the toggling of ShowKernelTimes in the Performance tab switch on and off in realtime without introducing gaps in the graph. It also makes the grid scroll together with the data, like on Windows. Most other parts I picked solely for their binary-shrinking effect. I decided to strip the ID_HELP_TOPICS from the rc files, as this was not implemented, and I would never port that back later. So it is one less non-functional-button in the older branches. I favored memset() over Zeromemory() in this usermode-app everywhere, and favoref for (;;) over while(1). Binary size shrinks slightly on all branches: master taskmgr.exe RosBEWin2.2.2 GCC8.4.0dbg 696.832 (0.4.15-dev-6820-gb3194e3) 0.4.14 taskmgr.exe RosBEWin2.1.6 GCC4.7.2dbg 549.888 -> 548.864 0.4.13 taskmgr.exe RosBEWin2.1.6 GCC4.7.2dbg 542.720 -> 542.208 0.4.12 taskmgr.exe RosBEWin2.1.6 GCC4.7.2dbg 545.792 -> 543.232 0.4.11 taskmgr.exe RosBEWin2.1.6 GCC4.7.2dbg 545.792 -> 543.232 0.4.10 taskmgr.exe RosBEWin2.1.6 GCC4.7.2dbg 532.480 -> 530.432 0.4. 9 taskmgr.exe RosBEWin2.1.6 GCC4.7.2dbg 532.480 -> 530.432 0.4. 8 taskmgr.exe RosBEWin2.1.6 GCC4.7.2dbg 532.480 -> 530.432 0.4. 7 taskmgr.exe RosBEWin2.1.6 GCC4.7.2dbg 531.456 -> 529.408 taskmgr.exe MS XPSP3 german 140.800 Bytes 0.4.14 taskmgr.exe RosBEWin2.1.6 MSVC2010SP1rls I18N=de-DE 110.080 Bytes -> 109.056 Bytes (my current taskmgr of choice) 0.4. 8 taskmgr.exe RosBEWin2.1.6 MSVC2010SP1rls I18N=en-US 108.032 Bytes -> 105.984 Bytes 0.4. 7 taskmgr.exe RosBEWin2.1.6 MSVC2010SP1rls I18N=en-US 107.520 Bytes -> 105.472 Bytes
This commit is contained in:
parent
b692935bcd
commit
92487c8097
|
@ -17,9 +17,9 @@ typedef struct
|
|||
|
||||
HWND hApplicationPage; /* Application List Property Page */
|
||||
HWND hApplicationPageListCtrl; /* Application ListCtrl Window */
|
||||
HWND hApplicationPageEndTaskButton; /* Application End Task button */
|
||||
HWND hApplicationPageSwitchToButton; /* Application Switch To button */
|
||||
HWND hApplicationPageNewTaskButton; /* Application New Task button */
|
||||
HWND hApplicationPageEndTaskButton;
|
||||
HWND hApplicationPageSwitchToButton;
|
||||
HWND hApplicationPageNewTaskButton;
|
||||
static int nApplicationPageWidth;
|
||||
static int nApplicationPageHeight;
|
||||
static BOOL bSortAscending = TRUE;
|
||||
|
@ -82,7 +82,6 @@ void AppPageCleanup(void)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
INT_PTR CALLBACK
|
||||
ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
|
@ -133,10 +132,8 @@ ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
#ifdef RUN_APPS_PAGE
|
||||
hApplicationThread = CreateThread(NULL, 0, ApplicationPageRefreshThread, NULL, 0, &dwApplicationThread);
|
||||
#endif
|
||||
|
||||
/* Refresh page */
|
||||
ApplicationPageUpdate();
|
||||
|
||||
return TRUE;
|
||||
|
||||
case WM_DESTROY:
|
||||
|
@ -161,7 +158,6 @@ ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
SendMessageW(hMainWnd, WM_COMMAND, MAKEWPARAM(ID_FILE_NEW, 0), 0);
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case WM_SIZE:
|
||||
|
@ -202,7 +198,6 @@ ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
cy = rc.top + nYDifference;
|
||||
SetWindowPos(hApplicationPageNewTaskButton, NULL, cx, cy, 0, 0, SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER);
|
||||
InvalidateRect(hApplicationPageNewTaskButton, NULL, TRUE);
|
||||
|
||||
break;
|
||||
|
||||
case WM_NOTIFY:
|
||||
|
@ -252,9 +247,9 @@ DWORD WINAPI ApplicationPageRefreshThread(void *lpParameter)
|
|||
HIMAGELIST hImageListSmall;
|
||||
|
||||
/* If we couldn't create the event then exit the thread */
|
||||
while (1)
|
||||
for (;;)
|
||||
{
|
||||
/* Wait for an the event or application close */
|
||||
// Wait for an the event or application close
|
||||
if (GetMessage(&msg, NULL, 0, 0) <= 0)
|
||||
return 0;
|
||||
|
||||
|
@ -352,14 +347,13 @@ BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
|
|||
|
||||
/* Get the icon for this window */
|
||||
hIcon = NULL;
|
||||
SendMessageTimeoutW(hWnd, WM_GETICON, bLargeIcon ? ICON_BIG : ICON_SMALL, 0, 0, 1000, (PDWORD_PTR)&hIcon);
|
||||
SendMessageTimeoutW(hWnd, WM_GETICON, bLargeIcon ? ICON_BIG : ICON_SMALL, 0, 0, 100, (PDWORD_PTR)&hIcon);
|
||||
if (!hIcon)
|
||||
{
|
||||
/* We failed, try to retrieve other icons... */
|
||||
hIcon = (HICON)(LONG_PTR)GetClassLongPtrW(hWnd, bLargeIcon ? GCL_HICON : GCL_HICONSM);
|
||||
if (!hIcon) hIcon = (HICON)(LONG_PTR)GetClassLongPtrW(hWnd, bLargeIcon ? GCL_HICONSM : GCL_HICON);
|
||||
if (!hIcon) SendMessageTimeoutW(hWnd, WM_QUERYDRAGICON, 0, 0, 0, 1000, (PDWORD_PTR)&hIcon);
|
||||
if (!hIcon) SendMessageTimeoutW(hWnd, WM_GETICON, bLargeIcon ? ICON_SMALL : ICON_BIG, 0, 0, 1000, (PDWORD_PTR)&hIcon);
|
||||
if (!hIcon) SendMessageTimeoutW(hWnd, WM_GETICON, bLargeIcon ? ICON_SMALL : ICON_BIG, 0, 0, 100, (PDWORD_PTR)&hIcon);
|
||||
|
||||
/* If we still do not have any icon, load the default one */
|
||||
if (!hIcon) hIcon = LoadIconW(hInst, bLargeIcon ? MAKEINTRESOURCEW(IDI_WINDOW) : MAKEINTRESOURCEW(IDI_WINDOWSM));
|
||||
|
@ -427,7 +421,6 @@ void AddOrUpdateHwnd(HWND hWnd, WCHAR *szTitle, HICON hIcon, BOOL bHung)
|
|||
|
||||
/* Update the list view */
|
||||
(void)ListView_RedrawItems(hApplicationPageListCtrl, 0, ListView_GetItemCount(hApplicationPageListCtrl));
|
||||
/* UpdateWindow(hApplicationPageListCtrl); */
|
||||
InvalidateRect(hApplicationPageListCtrl, NULL, 0);
|
||||
}
|
||||
}
|
||||
|
@ -526,15 +519,11 @@ void ApplicationPageOnNotify(WPARAM wParam, LPARAM lParam)
|
|||
case LVN_ITEMCHANGED:
|
||||
ApplicationPageUpdate();
|
||||
break;
|
||||
|
||||
case LVN_GETDISPINFO:
|
||||
pAPLI = (LPAPPLICATION_PAGE_LIST_ITEM)pnmdi->item.lParam;
|
||||
|
||||
/* Update the item text */
|
||||
if (pnmdi->item.iSubItem == 0)
|
||||
wcsncpy(pnmdi->item.pszText, pAPLI->szTitle, pnmdi->item.cchTextMax);
|
||||
|
||||
/* Update the item status */
|
||||
else if (pnmdi->item.iSubItem == 1)
|
||||
{
|
||||
if (pAPLI->bHung)
|
||||
|
@ -543,20 +532,16 @@ void ApplicationPageOnNotify(WPARAM wParam, LPARAM lParam)
|
|||
LoadStringW(GetModuleHandleW(NULL), IDS_RUNNING, (LPWSTR) szMsg, _countof(szMsg));
|
||||
wcsncpy(pnmdi->item.pszText, szMsg, pnmdi->item.cchTextMax);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case NM_RCLICK:
|
||||
if (ListView_GetSelectedCount(hApplicationPageListCtrl) < 1)
|
||||
ApplicationPageShowContextMenu1();
|
||||
else
|
||||
ApplicationPageShowContextMenu2();
|
||||
break;
|
||||
|
||||
case NM_DBLCLK:
|
||||
ApplicationPage_OnSwitchTo();
|
||||
break;
|
||||
|
||||
case LVN_KEYDOWN:
|
||||
if (((LPNMLVKEYDOWN)lParam)->wVKey == VK_DELETE)
|
||||
ApplicationPage_OnEndTask();
|
||||
|
@ -573,7 +558,6 @@ void ApplicationPageOnNotify(WPARAM wParam, LPARAM lParam)
|
|||
else
|
||||
ApplicationPageShowContextMenu2();
|
||||
break;
|
||||
|
||||
case HDN_ITEMCLICK:
|
||||
(void)ListView_SortItems(hApplicationPageListCtrl, ApplicationPageCompareFunc, 0);
|
||||
bSortAscending = !bSortAscending;
|
||||
|
@ -708,9 +692,8 @@ void ApplicationPage_OnWindowsMinimize(void)
|
|||
(void)ListView_GetItem(hApplicationPageListCtrl, &item);
|
||||
if (item.state & LVIS_SELECTED) {
|
||||
pAPLI = (LPAPPLICATION_PAGE_LIST_ITEM)item.lParam;
|
||||
if (pAPLI) {
|
||||
ShowWindow(pAPLI->hWnd, SW_MINIMIZE);
|
||||
}
|
||||
if (pAPLI)
|
||||
ShowWindowAsync(pAPLI->hWnd, SW_MINIMIZE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -729,9 +712,8 @@ void ApplicationPage_OnWindowsMaximize(void)
|
|||
(void)ListView_GetItem(hApplicationPageListCtrl, &item);
|
||||
if (item.state & LVIS_SELECTED) {
|
||||
pAPLI = (LPAPPLICATION_PAGE_LIST_ITEM)item.lParam;
|
||||
if (pAPLI) {
|
||||
ShowWindow(pAPLI->hWnd, SW_MAXIMIZE);
|
||||
}
|
||||
if (pAPLI)
|
||||
ShowWindowAsync(pAPLI->hWnd, SW_MAXIMIZE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -782,11 +764,8 @@ void ApplicationPage_OnWindowsBringToFront(void)
|
|||
break;
|
||||
}
|
||||
}
|
||||
if (pAPLI) {
|
||||
if (IsIconic(pAPLI->hWnd))
|
||||
ShowWindow(pAPLI->hWnd, SW_RESTORE);
|
||||
BringWindowToTop(pAPLI->hWnd);
|
||||
}
|
||||
if (pAPLI)
|
||||
SwitchToThisWindow(pAPLI->hWnd, TRUE);
|
||||
}
|
||||
|
||||
void ApplicationPage_OnSwitchTo(void)
|
||||
|
@ -808,21 +787,9 @@ void ApplicationPage_OnSwitchTo(void)
|
|||
}
|
||||
}
|
||||
if (pAPLI) {
|
||||
typedef void (WINAPI *PROCSWITCHTOTHISWINDOW) (HWND, BOOL);
|
||||
PROCSWITCHTOTHISWINDOW SwitchToThisWindow;
|
||||
|
||||
HMODULE hUser32 = GetModuleHandleW(L"USER32");
|
||||
SwitchToThisWindow = (PROCSWITCHTOTHISWINDOW)GetProcAddress(hUser32, "SwitchToThisWindow");
|
||||
if (SwitchToThisWindow) {
|
||||
SwitchToThisWindow(pAPLI->hWnd, TRUE);
|
||||
} else {
|
||||
if (IsIconic(pAPLI->hWnd))
|
||||
ShowWindow(pAPLI->hWnd, SW_RESTORE);
|
||||
BringWindowToTop(pAPLI->hWnd);
|
||||
SetForegroundWindow(pAPLI->hWnd);
|
||||
}
|
||||
SwitchToThisWindow(pAPLI->hWnd, TRUE);
|
||||
if (TaskManagerSettings.MinimizeOnUse)
|
||||
ShowWindow(hMainWnd, SW_MINIMIZE);
|
||||
ShowWindowAsync(hMainWnd, SW_MINIMIZE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -843,9 +810,8 @@ void ApplicationPage_OnEndTask(void)
|
|||
(void)ListView_GetItem(hApplicationPageListCtrl, &item);
|
||||
if (item.state & LVIS_SELECTED) {
|
||||
pAPLI = (LPAPPLICATION_PAGE_LIST_ITEM)item.lParam;
|
||||
if (pAPLI) {
|
||||
if (pAPLI)
|
||||
EndTask(pAPLI->hWnd, 0, ForceEndTask);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,14 +8,13 @@
|
|||
|
||||
extern HWND hApplicationPage; /* Application List Property Page */
|
||||
extern HWND hApplicationPageListCtrl; /* Application ListCtrl Window */
|
||||
extern HWND hApplicationPageEndTaskButton; /* Application End Task button */
|
||||
extern HWND hApplicationPageSwitchToButton; /* Application Switch To button */
|
||||
extern HWND hApplicationPageNewTaskButton; /* Application New Task button */
|
||||
extern HWND hApplicationPageEndTaskButton;
|
||||
extern HWND hApplicationPageSwitchToButton;
|
||||
extern HWND hApplicationPageNewTaskButton;
|
||||
|
||||
INT_PTR CALLBACK ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
void RefreshApplicationPage(void);
|
||||
void UpdateApplicationListControlViewSetting(void);
|
||||
|
||||
void ApplicationPage_OnView(DWORD);
|
||||
void ApplicationPage_OnWindowsTile(DWORD);
|
||||
void ApplicationPage_OnWindowsMinimize(void);
|
||||
|
|
|
@ -68,8 +68,8 @@ void ProcessPage_OnDebug(void)
|
|||
|
||||
wsprintfW(strDebugPath, strDebugger, dwProcessId, hDebugEvent);
|
||||
|
||||
ZeroMemory(&pi, sizeof(pi));
|
||||
ZeroMemory(&si, sizeof(si));
|
||||
memset(&pi, 0, sizeof(pi));
|
||||
memset(&si, 0, sizeof(si));
|
||||
si.cb = sizeof(si);
|
||||
if (!CreateProcessW(NULL, strDebugPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
|
||||
{
|
||||
|
|
|
@ -6,11 +6,6 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#define BRIGHT_GREEN RGB(0, 255, 0)
|
||||
#define MEDIUM_GREEN RGB(0, 190, 0)
|
||||
#define DARK_GREEN RGB(0, 130, 0)
|
||||
|
@ -19,8 +14,3 @@ extern "C" {
|
|||
extern WNDPROC OldGraphWndProc;
|
||||
|
||||
INT_PTR CALLBACK Graph_WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -6,311 +6,252 @@
|
|||
|
||||
#include "precomp.h"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
WNDPROC OldGraphCtrlWndProc;
|
||||
|
||||
static void GraphCtrl_Init(TGraphCtrl* this)
|
||||
void GraphCtrl_Create(PTGraphCtrl inst, HWND hWnd, HWND hParentWnd, PTFormat fmt)
|
||||
{
|
||||
int i;
|
||||
HDC hdc, hdcg;
|
||||
HBITMAP hbmOld;
|
||||
UINT Size;
|
||||
INT p;
|
||||
RECT rc;
|
||||
|
||||
this->m_hWnd = 0;
|
||||
this->m_hParentWnd = 0;
|
||||
this->m_dcGrid = 0;
|
||||
this->m_dcPlot = 0;
|
||||
this->m_bitmapOldGrid = 0;
|
||||
this->m_bitmapOldPlot = 0;
|
||||
this->m_bitmapGrid = 0;
|
||||
this->m_bitmapPlot = 0;
|
||||
this->m_brushBack = 0;
|
||||
inst->hParentWnd = hParentWnd;
|
||||
inst->hWnd = hWnd;
|
||||
|
||||
this->m_penPlot[0] = 0;
|
||||
this->m_penPlot[1] = 0;
|
||||
this->m_penPlot[2] = 0;
|
||||
this->m_penPlot[3] = 0;
|
||||
Size = GetSystemMetrics(SM_CXSCREEN);
|
||||
inst->BitmapWidth = Size;
|
||||
Size /= PLOT_SHIFT;
|
||||
inst->PointBuffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, Size * NUM_PLOTS);
|
||||
if (!inst->PointBuffer)
|
||||
goto fail;
|
||||
|
||||
this->m_dPreviousPosition[0] = 0.0;
|
||||
this->m_dPreviousPosition[1] = 0.0;
|
||||
this->m_dPreviousPosition[2] = 0.0;
|
||||
this->m_dPreviousPosition[3] = 0.0;
|
||||
inst->NumberOfPoints = Size;
|
||||
inst->CurrIndex = 0;
|
||||
|
||||
this->m_nYDecimals = 3;
|
||||
inst->hPenGrid = CreatePen(PS_SOLID, 0, fmt->clrGrid);
|
||||
inst->hPen0 = CreatePen(PS_SOLID, 0, fmt->clrPlot0);
|
||||
inst->hPen1 = CreatePen(PS_SOLID, 0, fmt->clrPlot1);
|
||||
inst->hBrushBack = CreateSolidBrush(fmt->clrBack);
|
||||
|
||||
this->m_dLowerLimit = 0.0;
|
||||
this->m_dUpperLimit = 100.0;
|
||||
this->m_dRange = this->m_dUpperLimit - this->m_dLowerLimit;
|
||||
if (!inst->hPenGrid || !inst->hPen0 || !inst->hPen1 || !inst->hBrushBack)
|
||||
goto fail;
|
||||
|
||||
this->m_nShiftPixels = 4;
|
||||
this->m_nHalfShiftPixels = this->m_nShiftPixels/2;
|
||||
this->m_nPlotShiftPixels = this->m_nShiftPixels + this->m_nHalfShiftPixels;
|
||||
if (fmt->GridCellWidth >= PLOT_SHIFT << 2)
|
||||
inst->GridCellWidth = fmt->GridCellWidth;
|
||||
else
|
||||
inst->GridCellWidth = PLOT_SHIFT << 2;
|
||||
if (fmt->GridCellHeight >= PLOT_SHIFT << 2)
|
||||
inst->GridCellHeight = fmt->GridCellHeight;
|
||||
else
|
||||
inst->GridCellHeight = PLOT_SHIFT << 2;
|
||||
|
||||
this->m_crBackColor = RGB( 0, 0, 0);
|
||||
this->m_crGridColor = RGB( 0, 128, 64);
|
||||
this->m_crPlotColor[0] = RGB(255, 255, 255);
|
||||
this->m_crPlotColor[1] = RGB(100, 255, 255);
|
||||
this->m_crPlotColor[2] = RGB(255, 100, 255);
|
||||
this->m_crPlotColor[3] = RGB(255, 255, 100);
|
||||
inst->DrawSecondaryPlot = fmt->DrawSecondaryPlot;
|
||||
|
||||
for (i = 0; i < MAX_PLOTS; i++)
|
||||
this->m_penPlot[i] = CreatePen(PS_SOLID, 0, this->m_crPlotColor[i]);
|
||||
this->m_brushBack = CreateSolidBrush(this->m_crBackColor);
|
||||
GetClientRect(hWnd, &rc);
|
||||
inst->BitmapHeight = rc.bottom;
|
||||
inst->ftPixelsPerPercent = (FLOAT)(inst->BitmapHeight) / 100.00f;
|
||||
|
||||
strcpy(this->m_strXUnitsString, "Samples");
|
||||
strcpy(this->m_strYUnitsString, "Y units");
|
||||
hdc = GetDC(hParentWnd);
|
||||
hdcg = CreateCompatibleDC(hdc);
|
||||
inst->hdcGraph = hdcg;
|
||||
inst->hbmGraph = CreateCompatibleBitmap(hdc, inst->BitmapWidth, inst->BitmapHeight);
|
||||
|
||||
this->m_bitmapOldGrid = NULL;
|
||||
this->m_bitmapOldPlot = NULL;
|
||||
}
|
||||
if (!hdc || !hdcg || !inst->hbmGraph)
|
||||
goto fail;
|
||||
|
||||
void GraphCtrl_Dispose(TGraphCtrl* this)
|
||||
{
|
||||
int plot;
|
||||
ReleaseDC(hParentWnd, hdc);
|
||||
hbmOld = (HBITMAP)SelectObject(hdcg, inst->hbmGraph);
|
||||
DeleteObject(hbmOld);
|
||||
|
||||
for (plot = 0; plot < MAX_PLOTS; plot++)
|
||||
DeleteObject(this->m_penPlot[plot]);
|
||||
SetBkColor(hdcg, fmt->clrBack);
|
||||
rc.right = inst->BitmapWidth;
|
||||
FillRect(hdcg, &rc, inst->hBrushBack);
|
||||
|
||||
if (this->m_bitmapOldGrid != NULL) SelectObject(this->m_dcGrid, this->m_bitmapOldGrid);
|
||||
if (this->m_bitmapOldPlot != NULL) SelectObject(this->m_dcPlot, this->m_bitmapOldPlot);
|
||||
if (this->m_bitmapGrid != NULL) DeleteObject(this->m_bitmapGrid);
|
||||
if (this->m_bitmapPlot != NULL) DeleteObject(this->m_bitmapPlot);
|
||||
if (this->m_dcGrid != NULL) DeleteDC(this->m_dcGrid);
|
||||
if (this->m_dcPlot != NULL) DeleteDC(this->m_dcPlot);
|
||||
if (this->m_brushBack != NULL) DeleteObject(this->m_brushBack);
|
||||
}
|
||||
|
||||
void GraphCtrl_Create(TGraphCtrl* this, HWND hWnd, HWND hParentWnd, UINT nID)
|
||||
{
|
||||
GraphCtrl_Init(this);
|
||||
this->m_hParentWnd = hParentWnd;
|
||||
this->m_hWnd = hWnd;
|
||||
|
||||
GraphCtrl_Resize(this);
|
||||
}
|
||||
|
||||
void GraphCtrl_SetRange(TGraphCtrl* this, double dLower, double dUpper, int nDecimalPlaces)
|
||||
{
|
||||
this->m_dLowerLimit = dLower;
|
||||
this->m_dUpperLimit = dUpper;
|
||||
this->m_nYDecimals = nDecimalPlaces;
|
||||
this->m_dRange = this->m_dUpperLimit - this->m_dLowerLimit;
|
||||
this->m_dVerticalFactor = (double)this->m_nPlotHeight / this->m_dRange;
|
||||
GraphCtrl_InvalidateCtrl(this, FALSE);
|
||||
}
|
||||
|
||||
void GraphCtrl_SetGridColor(TGraphCtrl* this, COLORREF color)
|
||||
{
|
||||
this->m_crGridColor = color;
|
||||
GraphCtrl_InvalidateCtrl(this, FALSE);
|
||||
}
|
||||
|
||||
void GraphCtrl_SetPlotColor(TGraphCtrl* this, int plot, COLORREF color)
|
||||
{
|
||||
this->m_crPlotColor[plot] = color;
|
||||
DeleteObject(this->m_penPlot[plot]);
|
||||
this->m_penPlot[plot] = CreatePen(PS_SOLID, 0, this->m_crPlotColor[plot]);
|
||||
GraphCtrl_InvalidateCtrl(this, FALSE);
|
||||
}
|
||||
|
||||
void GraphCtrl_SetBackgroundColor(TGraphCtrl* this, COLORREF color)
|
||||
{
|
||||
this->m_crBackColor = color;
|
||||
DeleteObject(this->m_brushBack);
|
||||
this->m_brushBack = CreateSolidBrush(this->m_crBackColor);
|
||||
GraphCtrl_InvalidateCtrl(this, FALSE);
|
||||
}
|
||||
|
||||
void GraphCtrl_InvalidateCtrl(TGraphCtrl* this, BOOL bResize)
|
||||
{
|
||||
int i;
|
||||
int nCharacters;
|
||||
HPEN oldPen;
|
||||
HPEN solidPen = CreatePen(PS_SOLID, 0, this->m_crGridColor);
|
||||
HDC dc = GetDC(this->m_hParentWnd);
|
||||
|
||||
if (this->m_dcGrid == NULL)
|
||||
inst->CurrShift = 0;
|
||||
SelectObject(hdcg, inst->hPenGrid);
|
||||
for (p = inst->GridCellHeight - 1; p < inst->BitmapHeight; p += inst->GridCellHeight)
|
||||
{
|
||||
this->m_dcGrid = CreateCompatibleDC(dc);
|
||||
this->m_bitmapGrid = CreateCompatibleBitmap(dc, this->m_nClientWidth, this->m_nClientHeight);
|
||||
this->m_bitmapOldGrid = (HBITMAP)SelectObject(this->m_dcGrid, this->m_bitmapGrid);
|
||||
MoveToEx(hdcg, 0, p, NULL);
|
||||
LineTo(hdcg, inst->BitmapWidth, p);
|
||||
}
|
||||
else if(bResize)
|
||||
for (p = inst->BitmapWidth - 1; p > 0; p -= inst->GridCellWidth)
|
||||
{
|
||||
if(this->m_bitmapGrid != NULL)
|
||||
MoveToEx(hdcg, p, 0, NULL);
|
||||
LineTo(hdcg, p, inst->BitmapHeight);
|
||||
}
|
||||
SelectObject(hdcg, inst->hPen0);
|
||||
|
||||
return;
|
||||
|
||||
fail:
|
||||
GraphCtrl_Dispose(inst);
|
||||
}
|
||||
|
||||
void GraphCtrl_Dispose(PTGraphCtrl inst)
|
||||
{
|
||||
if (inst->PointBuffer)
|
||||
HeapFree(GetProcessHeap(), 0, inst->PointBuffer);
|
||||
|
||||
if (inst->hdcGraph)
|
||||
DeleteDC(inst->hdcGraph);
|
||||
|
||||
if (inst->hPenGrid)
|
||||
DeleteObject(inst->hPenGrid);
|
||||
|
||||
if (inst->hPen0)
|
||||
DeleteObject(inst->hPen0);
|
||||
|
||||
if (inst->hPen1)
|
||||
DeleteObject(inst->hPen1);
|
||||
|
||||
if (inst->hBrushBack)
|
||||
DeleteObject(inst->hBrushBack);
|
||||
|
||||
if (inst->hbmGraph)
|
||||
DeleteObject(inst->hbmGraph);
|
||||
}
|
||||
|
||||
void GraphCtrl_AddPoint(PTGraphCtrl inst, BYTE val0, BYTE val1)
|
||||
{
|
||||
HDC hdcg;
|
||||
PBYTE t;
|
||||
RECT rcDirt;
|
||||
UINT Prev0, Prev1, RetainingWidth;
|
||||
INT PrevY, CurrY, p, v;
|
||||
|
||||
hdcg = inst->hdcGraph;
|
||||
RetainingWidth = inst->BitmapWidth - PLOT_SHIFT;
|
||||
t = inst->PointBuffer;
|
||||
Prev0 = *(t + inst->CurrIndex);
|
||||
Prev1 = *(t + inst->CurrIndex + inst->NumberOfPoints);
|
||||
if (inst->CurrIndex < inst->NumberOfPoints - 1)
|
||||
inst->CurrIndex++;
|
||||
else
|
||||
inst->CurrIndex = 0;
|
||||
*(t + inst->CurrIndex) = val0;
|
||||
*(t + inst->CurrIndex + inst->NumberOfPoints) = val1;
|
||||
|
||||
// Drawing points, first shifting the plot left
|
||||
BitBlt(hdcg, 0, 0, RetainingWidth, inst->BitmapHeight, hdcg, PLOT_SHIFT, 0, SRCCOPY);
|
||||
|
||||
rcDirt.left = RetainingWidth;
|
||||
rcDirt.top = 0;
|
||||
rcDirt.right = inst->BitmapWidth;
|
||||
rcDirt.bottom = inst->BitmapHeight;
|
||||
FillRect(hdcg, &rcDirt, inst->hBrushBack);
|
||||
|
||||
SelectObject(hdcg, inst->hPenGrid);
|
||||
for (p = inst->GridCellHeight - 1; p < inst->BitmapHeight; p += inst->GridCellHeight)
|
||||
{
|
||||
MoveToEx(hdcg, RetainingWidth, p, NULL);
|
||||
LineTo(hdcg, inst->BitmapWidth, p);
|
||||
}
|
||||
v = inst->CurrShift + PLOT_SHIFT;
|
||||
if (v >= inst->GridCellWidth)
|
||||
{
|
||||
v -= inst->GridCellWidth;
|
||||
p = inst->BitmapWidth - v - 1;
|
||||
MoveToEx(hdcg, p, 0, NULL);
|
||||
LineTo(hdcg, p, inst->BitmapHeight);
|
||||
}
|
||||
inst->CurrShift = v;
|
||||
|
||||
if (inst->DrawSecondaryPlot)
|
||||
{
|
||||
SelectObject(inst->hdcGraph, inst->hPen1);
|
||||
|
||||
PrevY = inst->BitmapHeight - Prev1 * inst->ftPixelsPerPercent;
|
||||
MoveToEx(inst->hdcGraph, RetainingWidth - 1, PrevY, NULL);
|
||||
CurrY = inst->BitmapHeight - val1 * inst->ftPixelsPerPercent;
|
||||
LineTo(inst->hdcGraph, inst->BitmapWidth - 1, CurrY);
|
||||
}
|
||||
|
||||
SelectObject(inst->hdcGraph, inst->hPen0);
|
||||
PrevY = inst->BitmapHeight - Prev0 * inst->ftPixelsPerPercent;
|
||||
MoveToEx(inst->hdcGraph, RetainingWidth - 1, PrevY, NULL);
|
||||
CurrY = inst->BitmapHeight - val0 * inst->ftPixelsPerPercent;
|
||||
LineTo(inst->hdcGraph, inst->BitmapWidth - 1, CurrY);
|
||||
}
|
||||
|
||||
inline void GraphCtrl_RedrawBitmap(PTGraphCtrl inst, INT h)
|
||||
{
|
||||
HDC hdcg;
|
||||
PBYTE t;
|
||||
RECT rc;
|
||||
INT i, j, y, x, p;
|
||||
FLOAT coef;
|
||||
|
||||
hdcg = inst->hdcGraph;
|
||||
rc.left = 0; rc.top = 0;
|
||||
rc.right = inst->BitmapWidth; rc.bottom = h;
|
||||
FillRect(hdcg, &rc, inst->hBrushBack);
|
||||
|
||||
SelectObject(hdcg, inst->hPenGrid);
|
||||
|
||||
for (p = inst->GridCellHeight - 1; p < inst->BitmapHeight; p += inst->GridCellHeight)
|
||||
{
|
||||
MoveToEx(hdcg, 0, p, NULL);
|
||||
LineTo(hdcg, inst->BitmapWidth, p);
|
||||
}
|
||||
|
||||
for (p = inst->BitmapWidth - inst->CurrShift - 1; p > 0; p -= inst->GridCellWidth)
|
||||
{
|
||||
MoveToEx(hdcg, p, 0, NULL);
|
||||
LineTo(hdcg, p, inst->BitmapHeight);
|
||||
}
|
||||
|
||||
coef = inst->ftPixelsPerPercent;
|
||||
|
||||
if (inst->DrawSecondaryPlot)
|
||||
{
|
||||
SelectObject(hdcg, inst->hPen1);
|
||||
t = inst->PointBuffer + inst->NumberOfPoints;
|
||||
x = inst->BitmapWidth - 1;
|
||||
j = inst->CurrIndex;
|
||||
y = h - *(t + j) * coef;
|
||||
MoveToEx(hdcg, x, y, NULL);
|
||||
for (i = 0; i < inst->NumberOfPoints; i++)
|
||||
{
|
||||
this->m_bitmapGrid = (HBITMAP)SelectObject(this->m_dcGrid, this->m_bitmapOldGrid);
|
||||
DeleteObject(this->m_bitmapGrid);
|
||||
this->m_bitmapGrid = CreateCompatibleBitmap(dc, this->m_nClientWidth, this->m_nClientHeight);
|
||||
SelectObject(this->m_dcGrid, this->m_bitmapGrid);
|
||||
j = (j ? j : inst->NumberOfPoints) - 1;
|
||||
y = h - *(t + j) * coef;
|
||||
x -= PLOT_SHIFT;
|
||||
LineTo(hdcg, x, y);
|
||||
}
|
||||
}
|
||||
|
||||
SetBkColor(this->m_dcGrid, this->m_crBackColor);
|
||||
SelectObject(hdcg, inst->hPen0);
|
||||
t = inst->PointBuffer;
|
||||
x = inst->BitmapWidth - 1;
|
||||
j = inst->CurrIndex;
|
||||
y = h - *(t + j) * coef;
|
||||
MoveToEx(hdcg, x, y, NULL);
|
||||
|
||||
FillRect(this->m_dcGrid, &this->m_rectClient, this->m_brushBack);
|
||||
|
||||
nCharacters = abs((int)log10(fabs(this->m_dUpperLimit)));
|
||||
nCharacters = max(nCharacters, abs((int)log10(fabs(this->m_dLowerLimit))));
|
||||
nCharacters = nCharacters + 4 + this->m_nYDecimals;
|
||||
|
||||
this->m_rectPlot.left = this->m_rectClient.left;
|
||||
this->m_nPlotWidth = this->m_rectPlot.right - this->m_rectPlot.left;
|
||||
|
||||
oldPen = (HPEN)SelectObject(this->m_dcGrid, solidPen);
|
||||
MoveToEx(this->m_dcGrid, this->m_rectPlot.left, this->m_rectPlot.top, NULL);
|
||||
LineTo(this->m_dcGrid, this->m_rectPlot.right+1, this->m_rectPlot.top);
|
||||
LineTo(this->m_dcGrid, this->m_rectPlot.right+1, this->m_rectPlot.bottom+1);
|
||||
LineTo(this->m_dcGrid, this->m_rectPlot.left, this->m_rectPlot.bottom+1);
|
||||
|
||||
for (i = this->m_rectPlot.top; i < this->m_rectPlot.bottom; i += 12)
|
||||
for (i = 0; i < inst->NumberOfPoints; i++)
|
||||
{
|
||||
MoveToEx(this->m_dcGrid, this->m_rectPlot.left, this->m_rectPlot.top + i, NULL);
|
||||
LineTo(this->m_dcGrid, this->m_rectPlot.right, this->m_rectPlot.top + i);
|
||||
}
|
||||
|
||||
for (i = this->m_rectPlot.left; i < this->m_rectPlot.right; i += 12)
|
||||
{
|
||||
MoveToEx(this->m_dcGrid, this->m_rectPlot.left + i, this->m_rectPlot.bottom, NULL);
|
||||
LineTo(this->m_dcGrid, this->m_rectPlot.left + i, this->m_rectPlot.top);
|
||||
}
|
||||
|
||||
SelectObject(this->m_dcGrid, oldPen);
|
||||
DeleteObject(solidPen);
|
||||
|
||||
if (this->m_dcPlot == NULL)
|
||||
{
|
||||
this->m_dcPlot = CreateCompatibleDC(dc);
|
||||
this->m_bitmapPlot = CreateCompatibleBitmap(dc, this->m_nClientWidth, this->m_nClientHeight);
|
||||
this->m_bitmapOldPlot = (HBITMAP)SelectObject(this->m_dcPlot, this->m_bitmapPlot);
|
||||
}
|
||||
else if(bResize)
|
||||
{
|
||||
if(this->m_bitmapPlot != NULL)
|
||||
{
|
||||
this->m_bitmapPlot = (HBITMAP)SelectObject(this->m_dcPlot, this->m_bitmapOldPlot);
|
||||
DeleteObject(this->m_bitmapPlot);
|
||||
this->m_bitmapPlot = CreateCompatibleBitmap(dc, this->m_nClientWidth, this->m_nClientHeight);
|
||||
SelectObject(this->m_dcPlot, this->m_bitmapPlot);
|
||||
}
|
||||
}
|
||||
|
||||
SetBkColor(this->m_dcPlot, this->m_crBackColor);
|
||||
FillRect(this->m_dcPlot, &this->m_rectClient, this->m_brushBack);
|
||||
|
||||
InvalidateRect(this->m_hParentWnd, &this->m_rectClient, TRUE);
|
||||
ReleaseDC(this->m_hParentWnd, dc);
|
||||
}
|
||||
|
||||
double GraphCtrl_AppendPoint(TGraphCtrl* this,
|
||||
double dNewPoint0, double dNewPoint1,
|
||||
double dNewPoint2, double dNewPoint3)
|
||||
{
|
||||
double dPrevious;
|
||||
|
||||
dPrevious = this->m_dCurrentPosition[0];
|
||||
this->m_dCurrentPosition[0] = dNewPoint0;
|
||||
this->m_dCurrentPosition[1] = dNewPoint1;
|
||||
this->m_dCurrentPosition[2] = dNewPoint2;
|
||||
this->m_dCurrentPosition[3] = dNewPoint3;
|
||||
GraphCtrl_DrawPoint(this);
|
||||
return dPrevious;
|
||||
}
|
||||
|
||||
void GraphCtrl_Paint(TGraphCtrl* this, HWND hWnd, HDC dc)
|
||||
{
|
||||
HDC memDC;
|
||||
HBITMAP memBitmap;
|
||||
HBITMAP oldBitmap;
|
||||
|
||||
memDC = CreateCompatibleDC(dc);
|
||||
memBitmap = (HBITMAP)CreateCompatibleBitmap(dc, this->m_nClientWidth, this->m_nClientHeight);
|
||||
oldBitmap = (HBITMAP)SelectObject(memDC, memBitmap);
|
||||
|
||||
if (memDC != NULL)
|
||||
{
|
||||
BitBlt(memDC, 0, 0, this->m_nClientWidth, this->m_nClientHeight, this->m_dcGrid, 0, 0, SRCCOPY);
|
||||
BitBlt(memDC, 0, 0, this->m_nClientWidth, this->m_nClientHeight, this->m_dcPlot, 0, 0, SRCPAINT);
|
||||
BitBlt(dc, 0, 0, this->m_nClientWidth, this->m_nClientHeight, memDC, 0, 0, SRCCOPY);
|
||||
}
|
||||
SelectObject(memDC, oldBitmap);
|
||||
DeleteObject(memBitmap);
|
||||
DeleteDC(memDC);
|
||||
}
|
||||
|
||||
void GraphCtrl_DrawPoint(TGraphCtrl* this)
|
||||
{
|
||||
int currX, prevX, currY, prevY;
|
||||
HPEN oldPen;
|
||||
RECT rectCleanUp;
|
||||
int i;
|
||||
|
||||
if (this->m_dcPlot != NULL)
|
||||
{
|
||||
BitBlt(this->m_dcPlot, this->m_rectPlot.left, this->m_rectPlot.top+1,
|
||||
this->m_nPlotWidth, this->m_nPlotHeight, this->m_dcPlot,
|
||||
this->m_rectPlot.left+this->m_nShiftPixels, this->m_rectPlot.top+1,
|
||||
SRCCOPY);
|
||||
|
||||
rectCleanUp = this->m_rectPlot;
|
||||
rectCleanUp.left = rectCleanUp.right - this->m_nShiftPixels;
|
||||
|
||||
FillRect(this->m_dcPlot, &rectCleanUp, this->m_brushBack);
|
||||
|
||||
for (i = 0; i < MAX_PLOTS; i++)
|
||||
{
|
||||
oldPen = (HPEN)SelectObject(this->m_dcPlot, this->m_penPlot[i]);
|
||||
|
||||
prevX = this->m_rectPlot.right-this->m_nPlotShiftPixels;
|
||||
prevY = this->m_rectPlot.bottom -
|
||||
(long)((this->m_dPreviousPosition[i] - this->m_dLowerLimit) * this->m_dVerticalFactor);
|
||||
MoveToEx(this->m_dcPlot, prevX, prevY, NULL);
|
||||
|
||||
currX = this->m_rectPlot.right-this->m_nHalfShiftPixels;
|
||||
currY = this->m_rectPlot.bottom -
|
||||
(long)((this->m_dCurrentPosition[i] - this->m_dLowerLimit) * this->m_dVerticalFactor);
|
||||
LineTo(this->m_dcPlot, currX, currY);
|
||||
|
||||
SelectObject(this->m_dcPlot, oldPen);
|
||||
|
||||
if ((prevY <= this->m_rectPlot.top) || (currY <= this->m_rectPlot.top))
|
||||
{
|
||||
RECT rc;
|
||||
rc.bottom = this->m_rectPlot.top+1;
|
||||
rc.left = prevX;
|
||||
rc.right = currX+1;
|
||||
rc.top = this->m_rectClient.top;
|
||||
FillRect(this->m_dcPlot, &rc, this->m_brushBack);
|
||||
}
|
||||
if ((prevY >= this->m_rectPlot.bottom) || (currY >= this->m_rectPlot.bottom))
|
||||
{
|
||||
RECT rc;
|
||||
rc.bottom = this->m_rectClient.bottom+1;
|
||||
rc.left = prevX;
|
||||
rc.right = currX+1;
|
||||
rc.top = this->m_rectPlot.bottom+1;
|
||||
FillRect(this->m_dcPlot, &rc, this->m_brushBack);
|
||||
}
|
||||
|
||||
this->m_dPreviousPosition[i] = this->m_dCurrentPosition[i];
|
||||
}
|
||||
j = (j ? j : inst->NumberOfPoints) - 1;
|
||||
y = h - *(t + j) * coef;
|
||||
x -= PLOT_SHIFT;
|
||||
LineTo(hdcg, x, y);
|
||||
}
|
||||
}
|
||||
|
||||
void GraphCtrl_Resize(TGraphCtrl* this)
|
||||
inline void GraphCtrl_RedrawOnHeightChange(PTGraphCtrl inst, INT nh)
|
||||
{
|
||||
GetClientRect(this->m_hWnd, &this->m_rectClient);
|
||||
HDC hdc;
|
||||
HBITMAP hbmOld;
|
||||
|
||||
this->m_nClientHeight = this->m_rectClient.bottom - this->m_rectClient.top;
|
||||
this->m_nClientWidth = this->m_rectClient.right - this->m_rectClient.left;
|
||||
inst->BitmapHeight = nh;
|
||||
inst->ftPixelsPerPercent = (FLOAT)nh / 100.00f;
|
||||
|
||||
this->m_rectPlot.left = 0;
|
||||
this->m_rectPlot.top = -1;
|
||||
this->m_rectPlot.right = this->m_rectClient.right;
|
||||
this->m_rectPlot.bottom = this->m_rectClient.bottom;
|
||||
hdc = GetDC(inst->hParentWnd);
|
||||
hbmOld = inst->hbmGraph;
|
||||
inst->hbmGraph = CreateCompatibleBitmap(hdc, inst->BitmapWidth, nh);
|
||||
SelectObject(inst->hdcGraph, inst->hbmGraph);
|
||||
DeleteObject(hbmOld);
|
||||
ReleaseDC(inst->hParentWnd, hdc);
|
||||
|
||||
this->m_nPlotHeight = this->m_rectPlot.bottom - this->m_rectPlot.top;
|
||||
this->m_nPlotWidth = this->m_rectPlot.right - this->m_rectPlot.left;
|
||||
|
||||
this->m_dVerticalFactor = (double)this->m_nPlotHeight / this->m_dRange;
|
||||
GraphCtrl_RedrawBitmap(inst, nh);
|
||||
}
|
||||
|
||||
extern TGraphCtrl PerformancePageCpuUsageHistoryGraph;
|
||||
|
@ -321,6 +262,7 @@ extern HWND hPerformancePageMemUsageHistoryGraph;
|
|||
INT_PTR CALLBACK
|
||||
GraphCtrl_WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
PTGraphCtrl graph;
|
||||
RECT rcClient;
|
||||
HDC hdc;
|
||||
PAINTSTRUCT ps;
|
||||
|
@ -371,24 +313,32 @@ GraphCtrl_WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
case WM_NCCALCSIZE:
|
||||
return 0;
|
||||
case WM_SIZE:
|
||||
if (hWnd == hPerformancePageMemUsageHistoryGraph)
|
||||
{
|
||||
GraphCtrl_Resize(&PerformancePageMemUsageHistoryGraph);
|
||||
GraphCtrl_InvalidateCtrl(&PerformancePageMemUsageHistoryGraph, TRUE);
|
||||
}
|
||||
if (hWnd == hPerformancePageCpuUsageHistoryGraph)
|
||||
{
|
||||
GraphCtrl_Resize(&PerformancePageCpuUsageHistoryGraph);
|
||||
GraphCtrl_InvalidateCtrl(&PerformancePageCpuUsageHistoryGraph, TRUE);
|
||||
}
|
||||
graph = &PerformancePageCpuUsageHistoryGraph;
|
||||
else if (hWnd == hPerformancePageMemUsageHistoryGraph)
|
||||
graph = &PerformancePageMemUsageHistoryGraph;
|
||||
else
|
||||
return 0;
|
||||
if (HIWORD(lParam) != graph->BitmapHeight)
|
||||
GraphCtrl_RedrawOnHeightChange(graph, HIWORD(lParam));
|
||||
InvalidateRect(hWnd, NULL, FALSE);
|
||||
return 0;
|
||||
case WM_PAINT:
|
||||
if (hWnd == hPerformancePageCpuUsageHistoryGraph)
|
||||
graph = &PerformancePageCpuUsageHistoryGraph;
|
||||
else if (hWnd == hPerformancePageMemUsageHistoryGraph)
|
||||
graph = &PerformancePageMemUsageHistoryGraph;
|
||||
else
|
||||
return 0;
|
||||
hdc = BeginPaint(hWnd, &ps);
|
||||
GetClientRect(hWnd, &rcClient);
|
||||
if (hWnd == hPerformancePageMemUsageHistoryGraph)
|
||||
GraphCtrl_Paint(&PerformancePageMemUsageHistoryGraph, hWnd, hdc);
|
||||
if (hWnd == hPerformancePageCpuUsageHistoryGraph)
|
||||
GraphCtrl_Paint(&PerformancePageCpuUsageHistoryGraph, hWnd, hdc);
|
||||
BitBlt(hdc, 0, 0,
|
||||
rcClient.right,
|
||||
rcClient.bottom,
|
||||
graph->hdcGraph,
|
||||
graph->BitmapWidth - rcClient.right,
|
||||
0,
|
||||
SRCCOPY);
|
||||
EndPaint(hWnd, &ps);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -6,72 +6,47 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#define MAX_PLOTS 4
|
||||
#define MAX_CTRLS 4
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#define NUM_PLOTS 2
|
||||
#define PLOT_SHIFT 2
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int m_nShiftPixels;
|
||||
int m_nYDecimals;
|
||||
HWND hParentWnd;
|
||||
HWND hWnd;
|
||||
HDC hdcGraph;
|
||||
HBITMAP hbmGraph;
|
||||
HPEN hPenGrid;
|
||||
HPEN hPen0;
|
||||
HPEN hPen1;
|
||||
HBRUSH hBrushBack;
|
||||
INT BitmapWidth;
|
||||
INT BitmapHeight;
|
||||
INT GridCellWidth;
|
||||
INT GridCellHeight;
|
||||
INT CurrShift;
|
||||
PBYTE PointBuffer;
|
||||
UINT32 NumberOfPoints;
|
||||
UINT32 CurrIndex;
|
||||
FLOAT ftPixelsPerPercent;
|
||||
BOOL DrawSecondaryPlot;
|
||||
} TGraphCtrl, *PTGraphCtrl;
|
||||
|
||||
char m_strXUnitsString[50];
|
||||
char m_strYUnitsString[50];
|
||||
|
||||
COLORREF m_crBackColor;
|
||||
COLORREF m_crGridColor;
|
||||
COLORREF m_crPlotColor[MAX_PLOTS];
|
||||
|
||||
double m_dCurrentPosition[MAX_PLOTS];
|
||||
double m_dPreviousPosition[MAX_PLOTS];
|
||||
|
||||
int m_nHalfShiftPixels;
|
||||
int m_nPlotShiftPixels;
|
||||
int m_nClientHeight;
|
||||
int m_nClientWidth;
|
||||
int m_nPlotHeight;
|
||||
int m_nPlotWidth;
|
||||
|
||||
double m_dLowerLimit;
|
||||
double m_dUpperLimit;
|
||||
double m_dRange;
|
||||
double m_dVerticalFactor;
|
||||
|
||||
HWND m_hWnd;
|
||||
HWND m_hParentWnd;
|
||||
HDC m_dcGrid;
|
||||
HDC m_dcPlot;
|
||||
HBITMAP m_bitmapOldGrid;
|
||||
HBITMAP m_bitmapOldPlot;
|
||||
HBITMAP m_bitmapGrid;
|
||||
HBITMAP m_bitmapPlot;
|
||||
HBRUSH m_brushBack;
|
||||
HPEN m_penPlot[MAX_PLOTS];
|
||||
RECT m_rectClient;
|
||||
RECT m_rectPlot;
|
||||
} TGraphCtrl;
|
||||
typedef struct
|
||||
{
|
||||
COLORREF clrBack;
|
||||
COLORREF clrGrid;
|
||||
COLORREF clrPlot0;
|
||||
COLORREF clrPlot1;
|
||||
INT GridCellWidth;
|
||||
INT GridCellHeight;
|
||||
BOOL DrawSecondaryPlot;
|
||||
} TFormat, *PTFormat;
|
||||
|
||||
extern WNDPROC OldGraphCtrlWndProc;
|
||||
double GraphCtrl_AppendPoint(TGraphCtrl* this,
|
||||
double dNewPoint0, double dNewPoint1,
|
||||
double dNewPoint2, double dNewPoint3);
|
||||
void GraphCtrl_Create(TGraphCtrl* this, HWND hWnd, HWND hParentWnd, UINT nID);
|
||||
void GraphCtrl_Dispose(TGraphCtrl* this);
|
||||
void GraphCtrl_DrawPoint(TGraphCtrl* this);
|
||||
void GraphCtrl_InvalidateCtrl(TGraphCtrl* this, BOOL bResize);
|
||||
void GraphCtrl_Paint(TGraphCtrl* this, HWND hWnd, HDC dc);
|
||||
void GraphCtrl_Reset(TGraphCtrl* this);
|
||||
void GraphCtrl_Resize(TGraphCtrl* this);
|
||||
void GraphCtrl_SetBackgroundColor(TGraphCtrl* this, COLORREF color);
|
||||
void GraphCtrl_SetGridColor(TGraphCtrl* this, COLORREF color);
|
||||
void GraphCtrl_SetPlotColor(TGraphCtrl* this, int plot, COLORREF color);
|
||||
void GraphCtrl_SetRange(TGraphCtrl* this, double dLower, double dUpper, int nDecimalPlaces);
|
||||
|
||||
INT_PTR CALLBACK GraphCtrl_WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
void GraphCtrl_Create(PTGraphCtrl inst, HWND hWnd, HWND hParentWnd, PTFormat fmt);
|
||||
void GraphCtrl_Dispose(PTGraphCtrl inst);
|
||||
void GraphCtrl_AddPoint(PTGraphCtrl inst, BYTE val0, BYTE val1);
|
||||
void GraphCtrl_RedrawOnHeightChange(PTGraphCtrl inst, INT nh);
|
||||
void GraphCtrl_RedrawBitmap(PTGraphCtrl inst, INT h);
|
||||
|
|
|
@ -60,8 +60,6 @@ BEGIN
|
|||
END
|
||||
POPUP "Помо&щ"
|
||||
BEGIN
|
||||
MENUITEM "Съдържание на помо&щта за задачния управител", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&За задачния управител", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -138,10 +136,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -306,17 +300,11 @@ BEGIN
|
|||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 125, 160, 115, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Задачен управител"
|
||||
IDC_TASKMGR "Задачен управител"
|
||||
IDS_IDLE_PROCESS "Бездействия"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Приложения"
|
||||
IDS_TAB_PROCESSES "Действия"
|
||||
IDS_TAB_PERFORMANCE "Производителност"
|
||||
|
|
|
@ -60,8 +60,6 @@ BEGIN
|
|||
END
|
||||
POPUP "&Nápověda"
|
||||
BEGIN
|
||||
MENUITEM "&Nápověda pro správce úloh", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&O správci úloh", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -138,10 +136,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -306,17 +300,11 @@ BEGIN
|
|||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Správce úloh"
|
||||
IDC_TASKMGR "Správce úloh"
|
||||
IDS_IDLE_PROCESS "Nečinné procesy"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Aplikace"
|
||||
IDS_TAB_PROCESSES "Procesy"
|
||||
IDS_TAB_PERFORMANCE "Výkon"
|
||||
|
|
|
@ -60,8 +60,6 @@ BEGIN
|
|||
END
|
||||
POPUP "&Hjælp"
|
||||
BEGIN
|
||||
MENUITEM "Opgavestyring &Hjælpe Emner", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Omkring Opgavestyring", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -138,10 +136,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -306,17 +300,11 @@ BEGIN
|
|||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 85, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Opgavestyring"
|
||||
IDC_TASKMGR "Opgavestyring"
|
||||
IDS_IDLE_PROCESS "System Idle Process"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Applications"
|
||||
IDS_TAB_PROCESSES "Processes"
|
||||
IDS_TAB_PERFORMANCE "Performance"
|
||||
|
|
|
@ -62,8 +62,6 @@ BEGIN
|
|||
END
|
||||
POPUP "&?"
|
||||
BEGIN
|
||||
MENUITEM "&Hilfethemen\tF1", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Inf&o", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -140,10 +138,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -308,17 +302,11 @@ BEGIN
|
|||
CONTROL "Befeh&lszeile", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Task-Manager"
|
||||
IDC_TASKMGR "Task-Manager"
|
||||
IDS_IDLE_PROCESS "Leerlaufprozess"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Anwendungen"
|
||||
IDS_TAB_PROCESSES "Prozesse"
|
||||
IDS_TAB_PERFORMANCE "Systemleistung"
|
||||
|
|
|
@ -62,8 +62,6 @@ BEGIN
|
|||
END
|
||||
POPUP "&Βοήθεια"
|
||||
BEGIN
|
||||
MENUITEM "Θέματα &Βοήθειας του Διαχειριστή Διεργασιών", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Σχετικά με τον Διαχειριστή Διεργασιών", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -140,10 +138,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -308,17 +302,11 @@ BEGIN
|
|||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Task Manager"
|
||||
IDC_TASKMGR "Task Manager"
|
||||
IDS_IDLE_PROCESS "System Idle Process"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Applications"
|
||||
IDS_TAB_PROCESSES "Processes"
|
||||
IDS_TAB_PERFORMANCE "Performance"
|
||||
|
|
|
@ -60,8 +60,6 @@ BEGIN
|
|||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "Task Manager &Help Topics", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&About Task Manager", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -138,8 +136,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -304,17 +300,11 @@ BEGIN
|
|||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Task Manager"
|
||||
IDC_TASKMGR "Task Manager"
|
||||
IDS_IDLE_PROCESS "System Idle Process"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Applications"
|
||||
IDS_TAB_PROCESSES "Processes"
|
||||
IDS_TAB_PERFORMANCE "Performance"
|
||||
|
|
|
@ -62,8 +62,6 @@ BEGIN
|
|||
END
|
||||
POPUP "Ay&uda"
|
||||
BEGIN
|
||||
MENUITEM "&Temas de Ayuda del Administrador de tareas", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Acerca del Administrador de tareas", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -140,10 +138,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -308,17 +302,11 @@ BEGIN
|
|||
CONTROL "&Línea de comandos", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 160, 75, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Administrador de tareas"
|
||||
IDC_TASKMGR "Administrador de tareas"
|
||||
IDS_IDLE_PROCESS "Proceso inactivo del sistema"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Aplicaciones"
|
||||
IDS_TAB_PROCESSES "Procesos"
|
||||
IDS_TAB_PERFORMANCE "Rendimiento"
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
/*
|
||||
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
|
||||
* TRANSLATOR: Joann Mõndresku <joannmondresku@gmail.com>
|
||||
*/
|
||||
// LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
|
||||
// COPYRIGHT: Joann Mõndresku <joannmondresku@gmail.com>
|
||||
|
||||
LANGUAGE LANG_ESTONIAN, SUBLANG_DEFAULT
|
||||
|
||||
IDR_TASKMANAGER MENU
|
||||
|
@ -64,8 +63,6 @@ BEGIN
|
|||
END
|
||||
POPUP "S&pikker"
|
||||
BEGIN
|
||||
MENUITEM "Tegumihalduri &spikriteemad", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Teave &Tegumihalduri kohta", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -142,8 +139,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -308,17 +303,11 @@ BEGIN
|
|||
CONTROL "K&äsurida", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Tegumihaldur"
|
||||
IDC_TASKMGR "Tegumihaldur"
|
||||
IDS_IDLE_PROCESS "Süsteemi jõudeoleku protsess"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Rakendused"
|
||||
IDS_TAB_PROCESSES "Protsessid"
|
||||
IDS_TAB_PERFORMANCE "Jõudlus"
|
||||
|
|
|
@ -62,8 +62,6 @@ BEGIN
|
|||
END
|
||||
POPUP "&Aide"
|
||||
BEGIN
|
||||
MENUITEM "&Rubriques d'aide du Gestionnaire des tâches", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "À &propos du Gestionnaire des tâches", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -140,10 +138,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -308,17 +302,11 @@ BEGIN
|
|||
CONTROL "&Ligne de commande", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 129, 160, 95, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Gestionnaire des tâches"
|
||||
IDC_TASKMGR "Gestionnaire des tâches"
|
||||
IDS_IDLE_PROCESS "Processus système en attente"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Applications"
|
||||
IDS_TAB_PROCESSES "Processus"
|
||||
IDS_TAB_PERFORMANCE "Performance"
|
||||
|
|
|
@ -62,8 +62,6 @@ BEGIN
|
|||
END
|
||||
POPUP "&עזרה"
|
||||
BEGIN
|
||||
MENUITEM "&נושאי עזרה של מנהל המשימות", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&אודות מנהל המשימות", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -140,10 +138,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -308,17 +302,11 @@ BEGIN
|
|||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "מנהל המשימות"
|
||||
IDC_TASKMGR "מנהל המשימות"
|
||||
IDS_IDLE_PROCESS "תהליך לא פעיל של המערכת"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "יישומים"
|
||||
IDS_TAB_PROCESSES "תהליכים"
|
||||
IDS_TAB_PERFORMANCE "ביצועים"
|
||||
|
|
|
@ -62,8 +62,6 @@ BEGIN
|
|||
END
|
||||
POPUP "&Súgó"
|
||||
BEGIN
|
||||
MENUITEM "&Témakörök", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Névjegy", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -140,10 +138,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -308,17 +302,11 @@ BEGIN
|
|||
CONTROL "&Parancssor", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Feladatkezelõ"
|
||||
IDC_TASKMGR "Feladatkezelõ"
|
||||
IDS_IDLE_PROCESS "Üresjárat"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Programok"
|
||||
IDS_TAB_PROCESSES "Folyamatok"
|
||||
IDS_TAB_PERFORMANCE "Performance"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* TRANSLATOR: Zaenal Mutaqin <ade999@gmail.com> */
|
||||
// COPYRIGHT: Zaenal Mutaqin <ade999@gmail.com>
|
||||
|
||||
LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
|
||||
|
||||
|
@ -62,8 +62,6 @@ BEGIN
|
|||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "Task Manager &Help Topics", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&About Task Manager", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -140,10 +138,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -308,17 +302,11 @@ BEGIN
|
|||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Manajer Tugas"
|
||||
IDC_TASKMGR "Manajer Tugas"
|
||||
IDS_IDLE_PROCESS "Proses Diam Sistem"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Aplikasi"
|
||||
IDS_TAB_PROCESSES "Proses"
|
||||
IDS_TAB_PERFORMANCE "Kinerja"
|
||||
|
|
|
@ -60,8 +60,6 @@ BEGIN
|
|||
END
|
||||
POPUP "&Aiuto"
|
||||
BEGIN
|
||||
MENUITEM "Task Manager &Help Topics", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Informazioni su Task Manager", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -138,10 +136,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -306,17 +300,11 @@ BEGIN
|
|||
CONTROL "&Linea di comando", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 70, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Task Manager"
|
||||
IDC_TASKMGR "Task Manager"
|
||||
IDS_IDLE_PROCESS "Processo Idle di sistema"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Applicazioni"
|
||||
IDS_TAB_PROCESSES "Processi"
|
||||
IDS_TAB_PERFORMANCE "Prestazioni"
|
||||
|
|
|
@ -60,8 +60,6 @@ BEGIN
|
|||
END
|
||||
POPUP "ヘルプ(&H)"
|
||||
BEGIN
|
||||
MENUITEM "トピックの検索(&H)", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "バージョン情報(&A)", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -138,10 +136,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -306,17 +300,11 @@ BEGIN
|
|||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "タスク マネージャ"
|
||||
IDC_TASKMGR "タスク マネージャ"
|
||||
IDS_IDLE_PROCESS "System Idle Process"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "アプリケーション"
|
||||
IDS_TAB_PROCESSES "プロセス"
|
||||
IDS_TAB_PERFORMANCE "パフォーマンス"
|
||||
|
|
|
@ -62,8 +62,6 @@ BEGIN
|
|||
END
|
||||
POPUP "도움말(&H)"
|
||||
BEGIN
|
||||
MENUITEM "작업 관리자 도움말 항목(&H)", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "작업 관리자 정보(&A)", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -140,10 +138,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -308,17 +302,11 @@ BEGIN
|
|||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "작업 관리자"
|
||||
IDC_TASKMGR "작업 관리자"
|
||||
IDS_IDLE_PROCESS "System Idle Process"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "응용 프로그램"
|
||||
IDS_TAB_PROCESSES "프로세스"
|
||||
IDS_TAB_PERFORMANCE "성능"
|
||||
|
|
|
@ -60,8 +60,6 @@ BEGIN
|
|||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "&Help-onderwerpen", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Info", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -121,11 +119,11 @@ IDR_PROCESS_PAGE_CONTEXT MENU
|
|||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Proces beëindigen", ID_PROCESS_PAGE_ENDPROCESS
|
||||
MENUITEM "Pro&ces beëindigen", ID_PROCESS_PAGE_ENDPROCESS
|
||||
MENUITEM "Process&tructuur beëindigen", ID_PROCESS_PAGE_ENDPROCESSTREE
|
||||
MENUITEM "&Fouten opsporen", ID_PROCESS_PAGE_DEBUG
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "P&rioriteit instellen"
|
||||
POPUP "&Prioriteit instellen"
|
||||
BEGIN
|
||||
MENUITEM "&Realtime", ID_PROCESS_PAGE_SETPRIORITY_REALTIME
|
||||
MENUITEM "&Hoog", ID_PROCESS_PAGE_SETPRIORITY_HIGH
|
||||
|
@ -138,10 +136,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -306,17 +300,11 @@ BEGIN
|
|||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 117, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Taakbeheer"
|
||||
IDC_TASKMGR "Taakbeheer"
|
||||
IDS_IDLE_PROCESS "Niet-actieve systeemprocessen"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Toepassingen"
|
||||
IDS_TAB_PROCESSES "Procesnaam"
|
||||
IDS_TAB_PERFORMANCE "Prestaties"
|
||||
|
|
|
@ -60,8 +60,6 @@ BEGIN
|
|||
END
|
||||
POPUP "&Hjelp"
|
||||
BEGIN
|
||||
MENUITEM "Emner i &hjelp for Oppgavebehandling", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Om Oppgavebehandling", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -138,10 +136,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -306,17 +300,11 @@ BEGIN
|
|||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Oppgavebehandling"
|
||||
IDC_TASKMGR "Oppgavebehandling"
|
||||
IDS_IDLE_PROCESS "System Idle Process"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Programmer"
|
||||
IDS_TAB_PROCESSES "Prosesser"
|
||||
IDS_TAB_PERFORMANCE "Ytelse"
|
||||
|
|
|
@ -67,8 +67,6 @@ BEGIN
|
|||
END
|
||||
POPUP "Pomo&c"
|
||||
BEGIN
|
||||
MENUITEM "Menedżer zadań - tematy &pomocy", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Menedżer zadań - &informacje", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -145,10 +143,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -313,17 +307,11 @@ BEGIN
|
|||
CONTROL "Linia poleceń", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 85, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Menedżer zadań"
|
||||
IDC_TASKMGR "Menedżer zadań"
|
||||
IDS_IDLE_PROCESS "Proces bezczynności systemu"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Aplikacje"
|
||||
IDS_TAB_PROCESSES "Procesy"
|
||||
IDS_TAB_PERFORMANCE "Wydajność"
|
||||
|
|
|
@ -60,8 +60,6 @@ BEGIN
|
|||
END
|
||||
POPUP "Aj&uda"
|
||||
BEGIN
|
||||
MENUITEM "&Tópicos da Ajuda do Gerenciador de tarefas", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "So&bre o Gerenciador de tarefas", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -138,10 +136,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -306,17 +300,11 @@ BEGIN
|
|||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 123, 160, 95, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Gerenciador de tarefas"
|
||||
IDC_TASKMGR "Gerenciador de tarefas"
|
||||
IDS_IDLE_PROCESS "Processo inativo do sistema"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Aplicativos"
|
||||
IDS_TAB_PROCESSES "Processos"
|
||||
IDS_TAB_PERFORMANCE "Performance"
|
||||
|
|
|
@ -65,8 +65,6 @@ BEGIN
|
|||
END
|
||||
POPUP "Aj&utor"
|
||||
BEGIN
|
||||
MENUITEM "&Manual…", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Despre…", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -143,10 +141,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -311,17 +305,11 @@ BEGIN
|
|||
CONTROL "Linie de comandă", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 120, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Gestionar de activități"
|
||||
IDC_TASKMGR "Gestionar de activități"
|
||||
IDS_IDLE_PROCESS "Proces de inactivitate sistem"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Aplicații"
|
||||
IDS_TAB_PROCESSES "Procese"
|
||||
IDS_TAB_PERFORMANCE "Performanță"
|
||||
|
|
|
@ -62,8 +62,6 @@ BEGIN
|
|||
END
|
||||
POPUP "&Справка"
|
||||
BEGIN
|
||||
MENUITEM "&Вызов справки", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&О программе...", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -140,10 +138,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -308,17 +302,11 @@ BEGIN
|
|||
CONTROL "Коммандная строка", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 90, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Диспетчер задач"
|
||||
IDC_TASKMGR "Диспетчер задач"
|
||||
IDS_IDLE_PROCESS "Бездействие системы"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Приложения"
|
||||
IDS_TAB_PROCESSES "Процессы"
|
||||
IDS_TAB_PERFORMANCE "Быстродействие"
|
||||
|
|
|
@ -62,8 +62,6 @@ BEGIN
|
|||
END
|
||||
POPUP "&Pomocník"
|
||||
BEGIN
|
||||
MENUITEM "Témy &Pomocníka pre Správcu úloh", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Č&o je &Správca úloh", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -140,10 +138,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -308,17 +302,11 @@ BEGIN
|
|||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 130, 160, 95, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Správca úloh systému"
|
||||
IDC_TASKMGR "Správca úloh systému"
|
||||
IDS_IDLE_PROCESS "Procesy systémovej nečinnosti"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Aplikácie"
|
||||
IDS_TAB_PROCESSES "Procesy"
|
||||
IDS_TAB_PERFORMANCE "Výkon"
|
||||
|
|
|
@ -63,8 +63,6 @@ BEGIN
|
|||
END
|
||||
POPUP "Ndihme"
|
||||
BEGIN
|
||||
MENUITEM "Task Manager &Ndihme me teme", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rreth Task Menager", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -141,8 +139,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -307,17 +303,11 @@ BEGIN
|
|||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Task Manager"
|
||||
IDC_TASKMGR "Task Manager"
|
||||
IDS_IDLE_PROCESS "Procese te papune te sistemit"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Aplikacione"
|
||||
IDS_TAB_PROCESSES "Procese"
|
||||
IDS_TAB_PERFORMANCE "Performanca"
|
||||
|
|
|
@ -62,8 +62,6 @@ BEGIN
|
|||
END
|
||||
POPUP "&Hjälp"
|
||||
BEGIN
|
||||
MENUITEM "Aktivitetshanteraren &hjälpavsnitt", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Om Aktivitetshanteraren", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -140,10 +138,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -308,17 +302,11 @@ BEGIN
|
|||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 133, 160, 95, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Aktivitetshanteraren"
|
||||
IDC_TASKMGR "Aktivitetshanteraren"
|
||||
IDS_IDLE_PROCESS "Systemets lediga resurser"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Program"
|
||||
IDS_TAB_PROCESSES "Processer"
|
||||
IDS_TAB_PERFORMANCE "Prestanda"
|
||||
|
|
|
@ -62,8 +62,6 @@ BEGIN
|
|||
END
|
||||
POPUP "&Yardım"
|
||||
BEGIN
|
||||
MENUITEM "&Görev Yöneticisi Yardım Konuları", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Görev Yöneticisi Hakkında", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -140,8 +138,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -306,17 +302,11 @@ BEGIN
|
|||
CONTROL "Komut Satırı", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Görev Yöneticisi"
|
||||
IDC_TASKMGR "Görev Yöneticisi"
|
||||
IDS_IDLE_PROCESS "Boş Sistem İşlemi"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Uygulamalar"
|
||||
IDS_TAB_PROCESSES "İşlemler"
|
||||
IDS_TAB_PERFORMANCE "Başarım"
|
||||
|
|
|
@ -60,8 +60,6 @@ BEGIN
|
|||
END
|
||||
POPUP "&Довідка"
|
||||
BEGIN
|
||||
MENUITEM "&Зміст", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Про Диспетчер завдань", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -138,10 +136,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -306,17 +300,11 @@ BEGIN
|
|||
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "Диспетчер завдань"
|
||||
IDC_TASKMGR "Диспетчер завдань"
|
||||
IDS_IDLE_PROCESS "Бездіяльність системи"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "Додатки"
|
||||
IDS_TAB_PROCESSES "Процеси"
|
||||
IDS_TAB_PERFORMANCE "Швидкодія"
|
||||
|
|
|
@ -67,8 +67,6 @@ BEGIN
|
|||
END
|
||||
POPUP "帮助(&H)"
|
||||
BEGIN
|
||||
MENUITEM "任务管理器帮助主题(&H)", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "关于任务管理器(&A)", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -145,10 +143,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -313,17 +307,11 @@ BEGIN
|
|||
CONTROL "命令行(&L)", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "任务管理器"
|
||||
IDC_TASKMGR "任务管理器"
|
||||
IDS_IDLE_PROCESS "系统空闲进程"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "应用程序"
|
||||
IDS_TAB_PROCESSES "进程"
|
||||
IDS_TAB_PERFORMANCE "性能"
|
||||
|
@ -377,7 +365,7 @@ BEGIN
|
|||
IDS_MSG_UNABLETERMINATEPRO "无法终止进程"
|
||||
IDS_MSG_CLOSESYSTEMPROCESS "这是一个至关重要的系统进程。任务管理器不会结束这一进程。"
|
||||
IDS_MSG_UNABLECHANGEPRIORITY "无法更改优先级"
|
||||
IDS_MSG_WARNINGCHANGEPRIORITY "警告: 改变这一进程的优先级可能会\n导致意外的结果,包括系统不稳定。 您确定\n要更改优先级类?"
|
||||
IDS_MSG_WARNINGCHANGEPRIORITY "警告:改变这一进程的优先级可能会\n导致意外的结果,包括系统不稳定。 您确定\n要更改优先级类?"
|
||||
IDS_MSG_TRAYICONCPUUSAGE "CPU 使用情况: %d%%"
|
||||
IDS_STATUS_MEMUSAGE "内存使用情况: %s / %s (%d%%)"
|
||||
IDS_STATUS_CPUUSAGE "CPU 使用情况: %3d%%"
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
/*
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* TRANSLATOR: Elton Chung <elton328@gmail.com>
|
||||
*/
|
||||
// LICENSE: GPL - See COPYING in the top level directory
|
||||
// COPYRIGHT: Elton Chung <elton328@gmail.com>
|
||||
|
||||
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
|
||||
|
||||
|
@ -65,8 +63,6 @@ BEGIN
|
|||
END
|
||||
POPUP "說明(&H)"
|
||||
BEGIN
|
||||
MENUITEM "工作管理員說明主题(&H)", ID_HELP_TOPICS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "關於工作管理員(&A)", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
@ -143,10 +139,6 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
/* TRANSLATORS: CAPTION must be the same as IDS_APP_TITLE to be brought back to focus when already opened */
|
||||
|
||||
IDD_TASKMGR_DIALOG DIALOGEX 0, 0, 264, 246
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
|
||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
|
@ -311,17 +303,11 @@ BEGIN
|
|||
CONTROL "命令列(&L)", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "工作管理員"
|
||||
IDC_TASKMGR "工作管理員"
|
||||
IDS_IDLE_PROCESS "系統空閒處理序"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TAB_APPS "應用程式"
|
||||
IDS_TAB_PROCESSES "處理程序"
|
||||
IDS_TAB_PERFORMANCE "性能"
|
||||
|
|
|
@ -91,9 +91,8 @@ void PerfDataUninitialize(void)
|
|||
HeapFree(GetProcessHeap(), 0, pEntry);
|
||||
}
|
||||
|
||||
if (SystemProcessorTimeInfo) {
|
||||
if (SystemProcessorTimeInfo)
|
||||
HeapFree(GetProcessHeap(), 0, SystemProcessorTimeInfo);
|
||||
}
|
||||
}
|
||||
|
||||
static void SidToUserName(PSID Sid, LPWSTR szBuffer, DWORD BufferSize)
|
||||
|
@ -257,18 +256,16 @@ void PerfDataRefresh(void)
|
|||
|
||||
/* If it's a first call - skip idle time calcs */
|
||||
if (liOldIdleTime.QuadPart != 0) {
|
||||
/* CurrentValue = NewValue - OldValue */
|
||||
// CurrentValue = NewValue - OldValue
|
||||
dbIdleTime = Li2Double(SysPerfInfo.IdleProcessTime) - Li2Double(liOldIdleTime);
|
||||
dbKernelTime = CurrentKernelTime - OldKernelTime;
|
||||
dbSystemTime = Li2Double(SysTimeInfo.CurrentTime) - Li2Double(liOldSystemTime);
|
||||
|
||||
/* CurrentCpuIdle = IdleTime / SystemTime */
|
||||
dbIdleTime = dbIdleTime / dbSystemTime;
|
||||
dbKernelTime = dbKernelTime / dbSystemTime;
|
||||
|
||||
/* CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors */
|
||||
dbIdleTime = 100.0 - dbIdleTime * 100.0 / (double)SystemBasicInfo.NumberOfProcessors; /* + 0.5; */
|
||||
dbKernelTime = 100.0 - dbKernelTime * 100.0 / (double)SystemBasicInfo.NumberOfProcessors; /* + 0.5; */
|
||||
dbIdleTime = 100.0 - dbIdleTime * 100.0 / (double)SystemBasicInfo.NumberOfProcessors;
|
||||
dbKernelTime = 100.0 - dbKernelTime * 100.0 / (double)SystemBasicInfo.NumberOfProcessors;
|
||||
}
|
||||
|
||||
/* Store new CPU's idle and system time */
|
||||
|
@ -320,11 +317,11 @@ void PerfDataRefresh(void)
|
|||
|
||||
pPerfData[Idx].ProcessId = pSPI->UniqueProcessId;
|
||||
|
||||
if (pPDOld) {
|
||||
if (pPDOld) {
|
||||
double CurTime = Li2Double(pSPI->KernelTime) + Li2Double(pSPI->UserTime);
|
||||
double OldTime = Li2Double(pPDOld->KernelTime) + Li2Double(pPDOld->UserTime);
|
||||
double CpuTime = (CurTime - OldTime) / dbSystemTime;
|
||||
CpuTime = CpuTime * 100.0 / (double)SystemBasicInfo.NumberOfProcessors; /* + 0.5; */
|
||||
CpuTime = CpuTime * 100.0 / (double)SystemBasicInfo.NumberOfProcessors;
|
||||
pPerfData[Idx].CPUUsage = (ULONG)CpuTime;
|
||||
}
|
||||
pPerfData[Idx].CPUTime.QuadPart = pSPI->UserTime.QuadPart + pSPI->KernelTime.QuadPart;
|
||||
|
@ -390,25 +387,22 @@ ReadProcOwner:
|
|||
} else {
|
||||
ClearInfo:
|
||||
/* clear information we were unable to fetch */
|
||||
ZeroMemory(&pPerfData[Idx].IOCounters, sizeof(IO_COUNTERS));
|
||||
memset(&pPerfData[Idx].IOCounters, 0, sizeof(IO_COUNTERS));
|
||||
}
|
||||
|
||||
cwcUserName = _countof(pPerfData[0].UserName);
|
||||
CachedGetUserFromSid(ProcessUser, pPerfData[Idx].UserName, &cwcUserName);
|
||||
|
||||
if (ProcessSD != NULL)
|
||||
{
|
||||
LocalFree((HLOCAL)ProcessSD);
|
||||
}
|
||||
|
||||
pPerfData[Idx].UserTime.QuadPart = pSPI->UserTime.QuadPart;
|
||||
pPerfData[Idx].KernelTime.QuadPart = pSPI->KernelTime.QuadPart;
|
||||
pSPI = (PSYSTEM_PROCESS_INFORMATION)((LPBYTE)pSPI + pSPI->NextEntryOffset);
|
||||
}
|
||||
HeapFree(GetProcessHeap(), 0, pBuffer);
|
||||
if (pPerfDataOld) {
|
||||
if (pPerfDataOld)
|
||||
HeapFree(GetProcessHeap(), 0, pPerfDataOld);
|
||||
}
|
||||
pPerfDataOld = pPerfData;
|
||||
LeaveCriticalSection(&PerfDataCriticalSection);
|
||||
}
|
||||
|
@ -422,17 +416,13 @@ ULONG PerfDataGetProcessIndex(ULONG pid)
|
|||
for (idx = 0; idx < ProcessCount; idx++)
|
||||
{
|
||||
if (PtrToUlong(pPerfData[idx].ProcessId) == pid)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
LeaveCriticalSection(&PerfDataCriticalSection);
|
||||
|
||||
if (idx == ProcessCount)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
return idx;
|
||||
}
|
||||
|
||||
|
@ -625,16 +615,15 @@ cleanup:
|
|||
|
||||
void PerfDataDeallocCommandLineCache()
|
||||
{
|
||||
PCMD_LINE_CACHE cache = global_cache;
|
||||
PCMD_LINE_CACHE cache_old;
|
||||
PCMD_LINE_CACHE cache, pnext;
|
||||
|
||||
while (cache && cache->pnext != NULL)
|
||||
for (cache = global_cache; cache; cache = pnext)
|
||||
{
|
||||
cache_old = cache;
|
||||
cache = cache->pnext;
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, cache_old);
|
||||
pnext = cache->pnext;
|
||||
HeapFree(GetProcessHeap(), 0, cache);
|
||||
}
|
||||
|
||||
global_cache = NULL;
|
||||
}
|
||||
|
||||
ULONG PerfDataGetSessionId(ULONG Index)
|
||||
|
@ -1088,9 +1077,7 @@ ULONG PerfDataGetTotalThreadCount(void)
|
|||
EnterCriticalSection(&PerfDataCriticalSection);
|
||||
|
||||
for (i=0; i<ProcessCount; i++)
|
||||
{
|
||||
ThreadCount += pPerfData[i].ThreadCount;
|
||||
}
|
||||
|
||||
LeaveCriticalSection(&PerfDataCriticalSection);
|
||||
|
||||
|
|
|
@ -6,10 +6,6 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))
|
||||
|
||||
typedef struct _PERFDATA
|
||||
|
@ -34,16 +30,15 @@ typedef struct _PERFDATA
|
|||
ULONG USERObjectCount;
|
||||
ULONG GDIObjectCount;
|
||||
IO_COUNTERS IOCounters;
|
||||
|
||||
LARGE_INTEGER UserTime;
|
||||
LARGE_INTEGER KernelTime;
|
||||
} PERFDATA, *PPERFDATA;
|
||||
|
||||
typedef struct _CMD_LINE_CACHE
|
||||
{
|
||||
DWORD idx;
|
||||
DWORD idx;
|
||||
LPWSTR str;
|
||||
ULONG len;
|
||||
ULONG len;
|
||||
struct _CMD_LINE_CACHE* pnext;
|
||||
} CMD_LINE_CACHE, *PCMD_LINE_CACHE;
|
||||
|
||||
|
@ -97,8 +92,3 @@ ULONG PerfDataGetPhysicalMemorySystemCacheK(void);
|
|||
ULONG PerfDataGetSystemHandleCount(void);
|
||||
|
||||
ULONG PerfDataGetTotalThreadCount(void);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -81,11 +81,6 @@ void AdjustFrameSize(HWND hCntrl, HWND hDlg, int nXDifference, int nYDifference,
|
|||
InvalidateRect(hCntrl, NULL, TRUE);
|
||||
}
|
||||
|
||||
static void AdjustControlPosition(HWND hCntrl, HWND hDlg, int nXDifference, int nYDifference)
|
||||
{
|
||||
AdjustFrameSize(hCntrl, hDlg, nXDifference, nYDifference, 0);
|
||||
}
|
||||
|
||||
static void AdjustCntrlPos(int ctrl_id, HWND hDlg, int nXDifference, int nYDifference)
|
||||
{
|
||||
AdjustFrameSize(GetDlgItem(hDlg, ctrl_id), hDlg, nXDifference, nYDifference, 0);
|
||||
|
@ -108,17 +103,18 @@ PerformancePageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
break;
|
||||
|
||||
case WM_INITDIALOG:
|
||||
/* Save the width and height */
|
||||
{
|
||||
TFormat fmt;
|
||||
|
||||
// Save the width and height
|
||||
GetClientRect(hDlg, &rc);
|
||||
nPerformancePageWidth = rc.right;
|
||||
nPerformancePageHeight = rc.bottom;
|
||||
|
||||
/* Update window position */
|
||||
// Update window position
|
||||
SetWindowPos(hDlg, NULL, 15, 30, 0, 0, SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER);
|
||||
|
||||
/*
|
||||
* Get handles to all the controls
|
||||
*/
|
||||
// Get handles to all the controls
|
||||
hTotalsFrame = GetDlgItem(hDlg, IDC_TOTALS_FRAME);
|
||||
hCommitChargeFrame = GetDlgItem(hDlg, IDC_COMMIT_CHARGE_FRAME);
|
||||
hKernelMemoryFrame = GetDlgItem(hDlg, IDC_KERNEL_MEMORY_FRAME);
|
||||
|
@ -147,36 +143,29 @@ PerformancePageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
hPerformancePageMemUsageHistoryGraph = GetDlgItem(hDlg, IDC_MEM_USAGE_HISTORY_GRAPH);
|
||||
hPerformancePageCpuUsageHistoryGraph = GetDlgItem(hDlg, IDC_CPU_USAGE_HISTORY_GRAPH);
|
||||
|
||||
GetClientRect(hPerformancePageCpuUsageHistoryGraph, &rc);
|
||||
/* create the control */
|
||||
GraphCtrl_Create(&PerformancePageCpuUsageHistoryGraph, hPerformancePageCpuUsageHistoryGraph, hDlg, IDC_CPU_USAGE_HISTORY_GRAPH);
|
||||
/* customize the control */
|
||||
GraphCtrl_SetRange(&PerformancePageCpuUsageHistoryGraph, 0.0, 100.0, 10);
|
||||
GraphCtrl_SetBackgroundColor(&PerformancePageCpuUsageHistoryGraph, RGB(0, 0, 0)) ;
|
||||
GraphCtrl_SetGridColor(&PerformancePageCpuUsageHistoryGraph, RGB(0, 128, 64));
|
||||
// Create the controls
|
||||
fmt.clrBack = RGB(0, 0, 0);
|
||||
fmt.clrGrid = RGB(0, 128, 64);
|
||||
fmt.clrPlot0 = RGB(0, 255, 0);
|
||||
fmt.clrPlot1 = RGB(255, 0, 0);
|
||||
fmt.GridCellWidth = fmt.GridCellHeight = 12;
|
||||
fmt.DrawSecondaryPlot = TaskManagerSettings.ShowKernelTimes;
|
||||
GraphCtrl_Create(&PerformancePageCpuUsageHistoryGraph, hPerformancePageCpuUsageHistoryGraph, hDlg, &fmt);
|
||||
|
||||
GraphCtrl_SetPlotColor(&PerformancePageCpuUsageHistoryGraph, 0, RGB(0, 255, 0)) ;
|
||||
GraphCtrl_SetPlotColor(&PerformancePageCpuUsageHistoryGraph, 1, RGB(255, 0, 0)) ;
|
||||
|
||||
GetClientRect(hPerformancePageMemUsageHistoryGraph, &rc);
|
||||
GraphCtrl_Create(&PerformancePageMemUsageHistoryGraph, hPerformancePageMemUsageHistoryGraph, hDlg, IDC_MEM_USAGE_HISTORY_GRAPH);
|
||||
GraphCtrl_SetRange(&PerformancePageMemUsageHistoryGraph, 0.0, 100.0, 10) ;
|
||||
GraphCtrl_SetBackgroundColor(&PerformancePageMemUsageHistoryGraph, RGB(0, 0, 0)) ;
|
||||
GraphCtrl_SetGridColor(&PerformancePageMemUsageHistoryGraph, RGB(0, 128, 64)) ;
|
||||
GraphCtrl_SetPlotColor(&PerformancePageMemUsageHistoryGraph, 0, RGB(255, 255, 0)) ;
|
||||
/* Start our refresh thread */
|
||||
fmt.clrPlot0 = RGB(255, 255, 0);
|
||||
fmt.clrPlot1 = RGB(100, 255, 255);
|
||||
fmt.DrawSecondaryPlot = TRUE;
|
||||
GraphCtrl_Create(&PerformancePageMemUsageHistoryGraph, hPerformancePageMemUsageHistoryGraph, hDlg, &fmt);
|
||||
#ifdef RUN_PERF_PAGE
|
||||
hPerformanceThread = CreateThread(NULL, 0, PerformancePageRefreshThread, NULL, 0, &dwPerformanceThread);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Subclass graph buttons
|
||||
*/
|
||||
// Subclass graph buttons
|
||||
OldGraphWndProc = (WNDPROC)SetWindowLongPtrW(hCpuUsageGraph, GWLP_WNDPROC, (LONG_PTR)Graph_WndProc);
|
||||
SetWindowLongPtrW(hMemUsageGraph, GWLP_WNDPROC, (LONG_PTR)Graph_WndProc);
|
||||
OldGraphCtrlWndProc = (WNDPROC)SetWindowLongPtrW(hPerformancePageMemUsageHistoryGraph, GWLP_WNDPROC, (LONG_PTR)GraphCtrl_WndProc);
|
||||
SetWindowLongPtrW(hPerformancePageCpuUsageHistoryGraph, GWLP_WNDPROC, (LONG_PTR)GraphCtrl_WndProc);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
case WM_COMMAND:
|
||||
break;
|
||||
|
@ -195,7 +184,7 @@ PerformancePageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
nPerformancePageHeight = cy;
|
||||
} while (0);
|
||||
|
||||
/* Reposition the performance page's controls */
|
||||
// Reposition the performance page's controls
|
||||
AdjustFrameSize(hTotalsFrame, hDlg, 0, nYDifference, 0);
|
||||
AdjustFrameSize(hCommitChargeFrame, hDlg, 0, nYDifference, 0);
|
||||
AdjustFrameSize(hKernelMemoryFrame, hDlg, 0, nYDifference, 0);
|
||||
|
@ -213,18 +202,18 @@ PerformancePageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
AdjustCntrlPos(IDS_TOTALS_PROCESS_COUNT, hDlg, 0, nYDifference);
|
||||
AdjustCntrlPos(IDS_TOTALS_THREAD_COUNT, hDlg, 0, nYDifference);
|
||||
|
||||
AdjustControlPosition(hCommitChargeTotalEdit, hDlg, 0, nYDifference);
|
||||
AdjustControlPosition(hCommitChargeLimitEdit, hDlg, 0, nYDifference);
|
||||
AdjustControlPosition(hCommitChargePeakEdit, hDlg, 0, nYDifference);
|
||||
AdjustControlPosition(hKernelMemoryTotalEdit, hDlg, 0, nYDifference);
|
||||
AdjustControlPosition(hKernelMemoryPagedEdit, hDlg, 0, nYDifference);
|
||||
AdjustControlPosition(hKernelMemoryNonPagedEdit, hDlg, 0, nYDifference);
|
||||
AdjustControlPosition(hPhysicalMemoryTotalEdit, hDlg, 0, nYDifference);
|
||||
AdjustControlPosition(hPhysicalMemoryAvailableEdit, hDlg, 0, nYDifference);
|
||||
AdjustControlPosition(hPhysicalMemorySystemCacheEdit, hDlg, 0, nYDifference);
|
||||
AdjustControlPosition(hTotalsHandleCountEdit, hDlg, 0, nYDifference);
|
||||
AdjustControlPosition(hTotalsProcessCountEdit, hDlg, 0, nYDifference);
|
||||
AdjustControlPosition(hTotalsThreadCountEdit, hDlg, 0, nYDifference);
|
||||
AdjustFrameSize(hCommitChargeTotalEdit, hDlg, 0, nYDifference, 0);
|
||||
AdjustFrameSize(hCommitChargeLimitEdit, hDlg, 0, nYDifference, 0);
|
||||
AdjustFrameSize(hCommitChargePeakEdit, hDlg, 0, nYDifference, 0);
|
||||
AdjustFrameSize(hKernelMemoryTotalEdit, hDlg, 0, nYDifference, 0);
|
||||
AdjustFrameSize(hKernelMemoryPagedEdit, hDlg, 0, nYDifference, 0);
|
||||
AdjustFrameSize(hKernelMemoryNonPagedEdit, hDlg, 0, nYDifference, 0);
|
||||
AdjustFrameSize(hPhysicalMemoryTotalEdit, hDlg, 0, nYDifference, 0);
|
||||
AdjustFrameSize(hPhysicalMemoryAvailableEdit, hDlg, 0, nYDifference, 0);
|
||||
AdjustFrameSize(hPhysicalMemorySystemCacheEdit, hDlg, 0, nYDifference, 0);
|
||||
AdjustFrameSize(hTotalsHandleCountEdit, hDlg, 0, nYDifference, 0);
|
||||
AdjustFrameSize(hTotalsProcessCountEdit, hDlg, 0, nYDifference, 0);
|
||||
AdjustFrameSize(hTotalsThreadCountEdit, hDlg, 0, nYDifference, 0);
|
||||
|
||||
nXDifference += lastX;
|
||||
nYDifference += lastY;
|
||||
|
@ -263,8 +252,8 @@ PerformancePageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
void RefreshPerformancePage(void)
|
||||
{
|
||||
#ifdef RUN_PERF_PAGE
|
||||
/* Signal the event so that our refresh thread
|
||||
* will wake up and refresh the performance page */
|
||||
// Signal the event so that our refresh thread
|
||||
// will wake up and refresh the performance page
|
||||
PostThreadMessage(dwPerformanceThread, WM_TIMER, 0, 0);
|
||||
#endif
|
||||
}
|
||||
|
@ -299,7 +288,7 @@ DWORD WINAPI PerformancePageRefreshThread(PVOID Parameter)
|
|||
LoadStringW(hInst, IDS_STATUS_MEMUSAGE, szMemUsage, 256);
|
||||
LoadStringW(hInst, IDS_STATUS_PROCESSES, szProcesses, 256);
|
||||
|
||||
while (1)
|
||||
for (;;)
|
||||
{
|
||||
int nBarsUsed1;
|
||||
int nBarsUsed2;
|
||||
|
@ -307,15 +296,13 @@ DWORD WINAPI PerformancePageRefreshThread(PVOID Parameter)
|
|||
WCHAR szChargeTotalFormat[256];
|
||||
WCHAR szChargeLimitFormat[256];
|
||||
|
||||
/* Wait for an the event or application close */
|
||||
// Wait for an the event or application close
|
||||
if (GetMessage(&msg, NULL, 0, 0) <= 0)
|
||||
return 0;
|
||||
|
||||
if (msg.message == WM_TIMER)
|
||||
{
|
||||
/*
|
||||
* Update the commit charge info
|
||||
*/
|
||||
// Update the commit charge info
|
||||
CommitChargeTotal = PerfDataGetCommitChargeTotalK();
|
||||
CommitChargeLimit = PerfDataGetCommitChargeLimitK();
|
||||
CommitChargePeak = PerfDataGetCommitChargePeakK();
|
||||
|
@ -338,9 +325,7 @@ DWORD WINAPI PerformancePageRefreshThread(PVOID Parameter)
|
|||
(CommitChargeLimit ? ((CommitChargeTotal * 100) / CommitChargeLimit) : 0));
|
||||
SendMessageW(hStatusWnd, SB_SETTEXT, 2, (LPARAM)Text);
|
||||
|
||||
/*
|
||||
* Update the kernel memory info
|
||||
*/
|
||||
// Update the kernel memory info
|
||||
KernelMemoryTotal = PerfDataGetKernelMemoryTotalK();
|
||||
KernelMemoryPaged = PerfDataGetKernelMemoryPagedK();
|
||||
KernelMemoryNonPaged = PerfDataGetKernelMemoryNonPagedK();
|
||||
|
@ -351,9 +336,7 @@ DWORD WINAPI PerformancePageRefreshThread(PVOID Parameter)
|
|||
_ultow(KernelMemoryNonPaged, Text, 10);
|
||||
SetWindowTextW(hKernelMemoryNonPagedEdit, Text);
|
||||
|
||||
/*
|
||||
* Update the physical memory info
|
||||
*/
|
||||
// Update the physical memory info
|
||||
PhysicalMemoryTotal = PerfDataGetPhysicalMemoryTotalK();
|
||||
PhysicalMemoryAvailable = PerfDataGetPhysicalMemoryAvailableK();
|
||||
PhysicalMemorySystemCache = PerfDataGetPhysicalMemorySystemCacheK();
|
||||
|
@ -364,9 +347,7 @@ DWORD WINAPI PerformancePageRefreshThread(PVOID Parameter)
|
|||
_ultow(PhysicalMemorySystemCache, Text, 10);
|
||||
SetWindowTextW(hPhysicalMemorySystemCacheEdit, Text);
|
||||
|
||||
/*
|
||||
* Update the totals info
|
||||
*/
|
||||
// Update the totals info
|
||||
TotalHandles = PerfDataGetSystemHandleCount();
|
||||
TotalThreads = PerfDataGetTotalThreadCount();
|
||||
TotalProcesses = PerfDataGetProcessCount();
|
||||
|
@ -379,24 +360,18 @@ DWORD WINAPI PerformancePageRefreshThread(PVOID Parameter)
|
|||
wsprintfW(Text, szProcesses, TotalProcesses);
|
||||
SendMessageW(hStatusWnd, SB_SETTEXT, 0, (LPARAM)Text);
|
||||
|
||||
/*
|
||||
* Redraw the graphs
|
||||
*/
|
||||
// Redraw the graphs
|
||||
InvalidateRect(hCpuUsageGraph, NULL, FALSE);
|
||||
InvalidateRect(hMemUsageGraph, NULL, FALSE);
|
||||
|
||||
/*
|
||||
* Get the CPU usage
|
||||
*/
|
||||
// Get the CPU usage
|
||||
CpuUsage = PerfDataGetProcessorUsage();
|
||||
CpuKernelUsage = PerfDataGetProcessorSystemUsage();
|
||||
|
||||
wsprintfW(Text, szCpuUsage, CpuUsage);
|
||||
SendMessageW(hStatusWnd, SB_SETTEXT, 1, (LPARAM)Text);
|
||||
|
||||
/*
|
||||
* Get the memory usage
|
||||
*/
|
||||
// Get the memory usage
|
||||
CommitChargeTotal = PerfDataGetCommitChargeTotalK();
|
||||
CommitChargeLimit = PerfDataGetCommitChargeLimitK();
|
||||
nBarsUsed1 = CommitChargeLimit ? ((CommitChargeTotal * 100) / CommitChargeLimit) : 0;
|
||||
|
@ -405,8 +380,8 @@ DWORD WINAPI PerformancePageRefreshThread(PVOID Parameter)
|
|||
PhysicalMemoryAvailable = PerfDataGetPhysicalMemoryAvailableK();
|
||||
nBarsUsed2 = PhysicalMemoryTotal ? ((PhysicalMemoryAvailable * 100) / PhysicalMemoryTotal) : 0;
|
||||
|
||||
GraphCtrl_AppendPoint(&PerformancePageCpuUsageHistoryGraph, CpuUsage, CpuKernelUsage, 0.0, 0.0);
|
||||
GraphCtrl_AppendPoint(&PerformancePageMemUsageHistoryGraph, nBarsUsed1, nBarsUsed2, 0.0, 0.0);
|
||||
GraphCtrl_AddPoint(&PerformancePageCpuUsageHistoryGraph, CpuUsage, CpuKernelUsage);
|
||||
GraphCtrl_AddPoint(&PerformancePageMemUsageHistoryGraph, nBarsUsed1, nBarsUsed2);
|
||||
InvalidateRect(hPerformancePageMemUsageHistoryGraph, NULL, FALSE);
|
||||
InvalidateRect(hPerformancePageCpuUsageHistoryGraph, NULL, FALSE);
|
||||
}
|
||||
|
@ -426,13 +401,16 @@ void PerformancePage_OnViewShowKernelTimes(void)
|
|||
{
|
||||
CheckMenuItem(hViewMenu, ID_VIEW_SHOWKERNELTIMES, MF_BYCOMMAND|MF_UNCHECKED);
|
||||
TaskManagerSettings.ShowKernelTimes = FALSE;
|
||||
PerformancePageCpuUsageHistoryGraph.DrawSecondaryPlot = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
CheckMenuItem(hViewMenu, ID_VIEW_SHOWKERNELTIMES, MF_BYCOMMAND|MF_CHECKED);
|
||||
TaskManagerSettings.ShowKernelTimes = TRUE;
|
||||
PerformancePageCpuUsageHistoryGraph.DrawSecondaryPlot = TRUE;
|
||||
}
|
||||
|
||||
GraphCtrl_RedrawBitmap(&PerformancePageCpuUsageHistoryGraph, PerformancePageCpuUsageHistoryGraph.BitmapHeight);
|
||||
RefreshPerformancePage();
|
||||
}
|
||||
|
||||
|
|
|
@ -6,18 +6,10 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern HWND hPerformancePage; /* Performance Property Page */
|
||||
extern HWND hPerformancePage;
|
||||
INT_PTR CALLBACK PerformancePageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
void RefreshPerformancePage(void);
|
||||
void PerformancePage_OnViewShowKernelTimes(void);
|
||||
void PerformancePage_OnViewCPUHistoryOneGraphAll(void);
|
||||
void PerformancePage_OnViewCPUHistoryOneGraphPerCPU(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -17,12 +17,11 @@ typedef struct
|
|||
ULONG ProcessId;
|
||||
} PROCESS_PAGE_LIST_ITEM, *LPPROCESS_PAGE_LIST_ITEM;
|
||||
|
||||
HWND hProcessPage; /* Process List Property Page */
|
||||
|
||||
HWND hProcessPageListCtrl; /* Process ListCtrl Window */
|
||||
HWND hProcessPageHeaderCtrl; /* Process Header Control */
|
||||
HWND hProcessPageEndProcessButton; /* Process End Process button */
|
||||
HWND hProcessPageShowAllProcessesButton;/* Process Show All Processes checkbox */
|
||||
HWND hProcessPage;
|
||||
HWND hProcessPageListCtrl;
|
||||
HWND hProcessPageHeaderCtrl;
|
||||
HWND hProcessPageEndProcessButton;
|
||||
HWND hProcessPageShowAllProcessesButton;
|
||||
BOOL bProcessPageSelectionMade = FALSE; /* Is item in ListCtrl selected */
|
||||
|
||||
static int nProcessPageWidth;
|
||||
|
@ -73,9 +72,7 @@ int ProcGetIndexByProcessId(DWORD dwProcessId)
|
|||
(void)ListView_GetItem(hProcessPageListCtrl, &item);
|
||||
pData = (LPPROCESS_PAGE_LIST_ITEM)item.lParam;
|
||||
if (pData->ProcessId == dwProcessId)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -160,7 +157,6 @@ ProcessPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
/* Refresh page */
|
||||
ProcessPageUpdate();
|
||||
|
||||
return TRUE;
|
||||
|
||||
case WM_DESTROY:
|
||||
|
@ -177,8 +173,8 @@ ProcessPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
/* Handle the button clicks */
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDC_ENDPROCESS:
|
||||
ProcessPage_OnEndProcess();
|
||||
case IDC_ENDPROCESS:
|
||||
ProcessPage_OnEndProcess();
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -248,31 +244,21 @@ void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam)
|
|||
case LVN_ITEMCHANGED:
|
||||
ProcessPageUpdate();
|
||||
break;
|
||||
|
||||
case LVN_GETDISPINFO:
|
||||
|
||||
if (!(pnmdi->item.mask & LVIF_TEXT))
|
||||
break;
|
||||
|
||||
pData = (LPPROCESS_PAGE_LIST_ITEM)pnmdi->item.lParam;
|
||||
Index = PerfDataGetProcessIndex(pData->ProcessId);
|
||||
ColumnIndex = pnmdi->item.iSubItem;
|
||||
|
||||
PerfDataGetText(Index, ColumnIndex, pnmdi->item.pszText, (ULONG)pnmdi->item.cchTextMax);
|
||||
|
||||
break;
|
||||
|
||||
case NM_RCLICK:
|
||||
|
||||
ProcessPageShowContextMenu(GetSelectedProcessId());
|
||||
break;
|
||||
|
||||
case LVN_KEYDOWN:
|
||||
|
||||
if (((LPNMLVKEYDOWN)lParam)->wVKey == VK_DELETE)
|
||||
ProcessPage_OnEndProcess();
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
else if (pnmh->hwndFrom == hProcessPageHeaderCtrl)
|
||||
|
@ -280,25 +266,16 @@ void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam)
|
|||
switch (pnmh->code)
|
||||
{
|
||||
case HDN_ITEMCLICK:
|
||||
|
||||
TaskManagerSettings.SortColumn = ColumnDataHints[pnmhdr->iItem];
|
||||
TaskManagerSettings.SortAscending = !TaskManagerSettings.SortAscending;
|
||||
(void)ListView_SortItems(hProcessPageListCtrl, ProcessPageCompareFunc, NULL);
|
||||
|
||||
break;
|
||||
|
||||
case HDN_ITEMCHANGED:
|
||||
|
||||
UpdateColumnDataHints();
|
||||
|
||||
break;
|
||||
|
||||
case HDN_ENDDRAG:
|
||||
|
||||
UpdateColumnDataHints();
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -351,7 +328,7 @@ void ProcessPageShowContextMenu(DWORD dwProcessId)
|
|||
if (si.dwNumberOfProcessors < 2)
|
||||
RemoveMenu(hSubMenu, ID_PROCESS_PAGE_SETAFFINITY, MF_BYCOMMAND);
|
||||
|
||||
switch (dwProcessPriorityClass) {
|
||||
switch (dwProcessPriorityClass) {
|
||||
case REALTIME_PRIORITY_CLASS:
|
||||
CheckMenuRadioItem(hPriorityMenu, ID_PROCESS_PAGE_SETPRIORITY_REALTIME, ID_PROCESS_PAGE_SETPRIORITY_LOW, ID_PROCESS_PAGE_SETPRIORITY_REALTIME, MF_BYCOMMAND);
|
||||
break;
|
||||
|
@ -405,13 +382,12 @@ DWORD WINAPI ProcessPageRefreshThread(void *lpParameter)
|
|||
{
|
||||
MSG msg;
|
||||
|
||||
while (1) {
|
||||
/* Wait for an the event or application close */
|
||||
for (;;) {
|
||||
// Wait for an the event or application close
|
||||
if (GetMessage(&msg, NULL, 0, 0) <= 0)
|
||||
return 0;
|
||||
|
||||
if (msg.message == WM_TIMER) {
|
||||
|
||||
UpdateProcesses();
|
||||
|
||||
if (IsWindowVisible(hProcessPage))
|
||||
|
@ -452,15 +428,11 @@ void UpdateProcesses()
|
|||
{
|
||||
/* Add new processes by checking against the current items */
|
||||
for (l = 0; l < PerfDataGetProcessCount(); l++)
|
||||
{
|
||||
AddProcess(l);
|
||||
}
|
||||
}
|
||||
|
||||
if (TaskManagerSettings.SortColumn != -1)
|
||||
{
|
||||
(void)ListView_SortItems(hProcessPageListCtrl, ProcessPageCompareFunc, NULL);
|
||||
}
|
||||
|
||||
SendMessage(hProcessPageListCtrl, WM_SETREDRAW, TRUE, 0);
|
||||
|
||||
|
@ -471,12 +443,6 @@ void UpdateProcesses()
|
|||
ListView_SetItemState(hProcessPageListCtrl, 0, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);
|
||||
bProcessPageSelectionMade = TRUE;
|
||||
}
|
||||
/*
|
||||
else
|
||||
{
|
||||
bProcessPageSelectionMade = FALSE;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
BOOL ProcessRunning(ULONG ProcessId)
|
||||
|
@ -484,14 +450,12 @@ BOOL ProcessRunning(ULONG ProcessId)
|
|||
HANDLE hProcess;
|
||||
DWORD exitCode;
|
||||
|
||||
if (ProcessId == 0) {
|
||||
if (ProcessId == 0)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessId);
|
||||
if (hProcess == NULL) {
|
||||
if (hProcess == NULL)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (GetExitCodeProcess(hProcess, &exitCode)) {
|
||||
CloseHandle(hProcess);
|
||||
|
@ -544,22 +508,29 @@ void AddProcess(ULONG Index)
|
|||
BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, ULONG nMaxCount)
|
||||
{
|
||||
IO_COUNTERS iocounters;
|
||||
LARGE_INTEGER time;
|
||||
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_IMAGENAME)
|
||||
switch (ColumnDataHints[ColumnIndex]) {
|
||||
case COLUMN_IMAGENAME:
|
||||
PerfDataGetImageName(Index, lpText, nMaxCount);
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_PID)
|
||||
return TRUE;
|
||||
case COLUMN_PID:
|
||||
wsprintfW(lpText, L"%lu", PerfDataGetProcessId(Index));
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_USERNAME)
|
||||
return TRUE;
|
||||
case COLUMN_USERNAME:
|
||||
PerfDataGetUserName(Index, lpText, nMaxCount);
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_COMMANDLINE)
|
||||
return TRUE;
|
||||
case COLUMN_COMMANDLINE:
|
||||
PerfDataGetCommandLine(Index, lpText, nMaxCount);
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_SESSIONID)
|
||||
return TRUE;
|
||||
case COLUMN_SESSIONID:
|
||||
wsprintfW(lpText, L"%lu", PerfDataGetSessionId(Index));
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_CPUUSAGE)
|
||||
return TRUE;
|
||||
case COLUMN_CPUUSAGE:
|
||||
wsprintfW(lpText, L"%02lu", PerfDataGetCPUUsage(Index));
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_CPUTIME)
|
||||
return TRUE;
|
||||
case COLUMN_CPUTIME:
|
||||
{
|
||||
LARGE_INTEGER time;
|
||||
DWORD dwHours;
|
||||
DWORD dwMinutes;
|
||||
DWORD dwSeconds;
|
||||
|
@ -567,116 +538,100 @@ BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, ULONG nMaxCo
|
|||
time = PerfDataGetCPUTime(Index);
|
||||
gethmsfromlargeint(time, &dwHours, &dwMinutes, &dwSeconds);
|
||||
wsprintfW(lpText, L"%lu:%02lu:%02lu", dwHours, dwMinutes, dwSeconds);
|
||||
return TRUE;
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_MEMORYUSAGE)
|
||||
{
|
||||
case COLUMN_MEMORYUSAGE:
|
||||
wsprintfW(lpText, L"%lu", PerfDataGetWorkingSetSizeBytes(Index) / 1024);
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
wcscat(lpText, L" K");
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_PEAKMEMORYUSAGE)
|
||||
{
|
||||
return TRUE;
|
||||
case COLUMN_PEAKMEMORYUSAGE:
|
||||
wsprintfW(lpText, L"%lu", PerfDataGetPeakWorkingSetSizeBytes(Index) / 1024);
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
wcscat(lpText, L" K");
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_MEMORYUSAGEDELTA)
|
||||
{
|
||||
return TRUE;
|
||||
case COLUMN_MEMORYUSAGEDELTA:
|
||||
wsprintfW(lpText, L"%lu", PerfDataGetWorkingSetSizeDelta(Index) / 1024);
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
wcscat(lpText, L" K");
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_PAGEFAULTS)
|
||||
{
|
||||
return TRUE;
|
||||
case COLUMN_PAGEFAULTS:
|
||||
wsprintfW(lpText, L"%lu", PerfDataGetPageFaultCount(Index));
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_PAGEFAULTSDELTA)
|
||||
{
|
||||
return TRUE;
|
||||
case COLUMN_PAGEFAULTSDELTA:
|
||||
wsprintfW(lpText, L"%lu", PerfDataGetPageFaultCountDelta(Index));
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_VIRTUALMEMORYSIZE)
|
||||
{
|
||||
return TRUE;
|
||||
case COLUMN_VIRTUALMEMORYSIZE:
|
||||
wsprintfW(lpText, L"%lu", PerfDataGetVirtualMemorySizeBytes(Index) / 1024);
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
wcscat(lpText, L" K");
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_PAGEDPOOL)
|
||||
{
|
||||
return TRUE;
|
||||
case COLUMN_PAGEDPOOL:
|
||||
wsprintfW(lpText, L"%lu", PerfDataGetPagedPoolUsagePages(Index) / 1024);
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
wcscat(lpText, L" K");
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_NONPAGEDPOOL)
|
||||
{
|
||||
return TRUE;
|
||||
case COLUMN_NONPAGEDPOOL:
|
||||
wsprintfW(lpText, L"%lu", PerfDataGetNonPagedPoolUsagePages(Index) / 1024);
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
wcscat(lpText, L" K");
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_BASEPRIORITY)
|
||||
return TRUE;
|
||||
case COLUMN_BASEPRIORITY:
|
||||
wsprintfW(lpText, L"%lu", PerfDataGetBasePriority(Index));
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_HANDLECOUNT)
|
||||
{
|
||||
return TRUE;
|
||||
case COLUMN_HANDLECOUNT:
|
||||
wsprintfW(lpText, L"%lu", PerfDataGetHandleCount(Index));
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_THREADCOUNT)
|
||||
{
|
||||
return TRUE;
|
||||
case COLUMN_THREADCOUNT:
|
||||
wsprintfW(lpText, L"%lu", PerfDataGetThreadCount(Index));
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_USEROBJECTS)
|
||||
{
|
||||
return TRUE;
|
||||
case COLUMN_USEROBJECTS:
|
||||
wsprintfW(lpText, L"%lu", PerfDataGetUSERObjectCount(Index));
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_GDIOBJECTS)
|
||||
{
|
||||
return TRUE;
|
||||
case COLUMN_GDIOBJECTS:
|
||||
wsprintfW(lpText, L"%lu", PerfDataGetGDIObjectCount(Index));
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_IOREADS)
|
||||
{
|
||||
return TRUE;
|
||||
case COLUMN_IOREADS:
|
||||
PerfDataGetIOCounters(Index, &iocounters);
|
||||
_ui64tow(iocounters.ReadOperationCount, lpText, 10);
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_IOWRITES)
|
||||
{
|
||||
return TRUE;
|
||||
case COLUMN_IOWRITES:
|
||||
PerfDataGetIOCounters(Index, &iocounters);
|
||||
_ui64tow(iocounters.WriteOperationCount, lpText, 10);
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_IOOTHER)
|
||||
{
|
||||
return TRUE;
|
||||
case COLUMN_IOOTHER:
|
||||
PerfDataGetIOCounters(Index, &iocounters);
|
||||
_ui64tow(iocounters.OtherOperationCount, lpText, 10);
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_IOREADBYTES)
|
||||
{
|
||||
return TRUE;
|
||||
case COLUMN_IOREADBYTES:
|
||||
PerfDataGetIOCounters(Index, &iocounters);
|
||||
_ui64tow(iocounters.ReadTransferCount, lpText, 10);
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_IOWRITEBYTES)
|
||||
{
|
||||
return TRUE;
|
||||
case COLUMN_IOWRITEBYTES:
|
||||
PerfDataGetIOCounters(Index, &iocounters);
|
||||
_ui64tow(iocounters.WriteTransferCount, lpText, 10);
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
}
|
||||
if (ColumnDataHints[ColumnIndex] == COLUMN_IOOTHERBYTES)
|
||||
{
|
||||
return TRUE;
|
||||
case COLUMN_IOOTHERBYTES:
|
||||
PerfDataGetIOCounters(Index, &iocounters);
|
||||
_ui64tow(iocounters.OtherTransferCount, lpText, 10);
|
||||
CommaSeparateNumberString(lpText, nMaxCount);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
void gethmsfromlargeint(LARGE_INTEGER largeint, DWORD *dwHours, DWORD *dwMinutes, DWORD *dwSeconds)
|
||||
{
|
||||
#ifdef _MSC_VER
|
||||
|
@ -707,9 +662,7 @@ int largeintcmp(LARGE_INTEGER l1, LARGE_INTEGER l2)
|
|||
{
|
||||
ret = CMP(dwMinutes1, dwMinutes2);
|
||||
if (ret == 0)
|
||||
{
|
||||
ret = CMP(dwSeconds1, dwSeconds2);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -150,7 +150,6 @@
|
|||
#define ID_WINDOWS_MAXIMIZE 32788
|
||||
#define ID_WINDOWS_CASCADE 32789
|
||||
#define ID_WINDOWS_BRINGTOFRONT 32790
|
||||
#define ID_HELP_TOPICS 32791
|
||||
#define ID_HELP_ABOUT 32792
|
||||
#define ID_FILE_EXIT 32793
|
||||
#define ID_OPTIONS_SHOW16BITTASKS 32794
|
||||
|
|
|
@ -15,47 +15,27 @@
|
|||
|
||||
#define STATUS_WINDOW 2001
|
||||
|
||||
/* Global Variables: */
|
||||
HINSTANCE hInst; /* current instance */
|
||||
|
||||
HWND hMainWnd; /* Main Window */
|
||||
HWND hStatusWnd; /* Status Bar Window */
|
||||
HWND hTabWnd; /* Tab Control Window */
|
||||
|
||||
HMENU hWindowMenu = NULL;
|
||||
|
||||
int nMinimumWidth; /* Minimum width of the dialog (OnSize()'s cx) */
|
||||
int nMinimumHeight; /* Minimum height of the dialog (OnSize()'s cy) */
|
||||
|
||||
int nOldWidth; /* Holds the previous client area width */
|
||||
int nOldHeight; /* Holds the previous client area height */
|
||||
|
||||
BOOL bWasKeyboardInput = FALSE; /* TabChange by Keyboard or Mouse ? */
|
||||
|
||||
TASKMANAGER_SETTINGS TaskManagerSettings;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Taken from WinSpy++ 1.7
|
||||
// http://www.catch22.net/software/winspy
|
||||
// Copyright (c) 2002 by J Brown
|
||||
//
|
||||
|
||||
//
|
||||
// Copied from uxtheme.h
|
||||
// If you have this new header, then delete these and
|
||||
// #include <uxtheme.h> instead!
|
||||
//
|
||||
#define ETDT_DISABLE 0x00000001
|
||||
#define ETDT_ENABLE 0x00000002
|
||||
#define ETDT_USETABTEXTURE 0x00000004
|
||||
#define ETDT_ENABLETAB (ETDT_ENABLE | ETDT_USETABTEXTURE)
|
||||
|
||||
//
|
||||
typedef HRESULT (WINAPI * ETDTProc) (HWND, DWORD);
|
||||
|
||||
//
|
||||
// Try to call EnableThemeDialogTexture, if uxtheme.dll is present
|
||||
//
|
||||
BOOL EnableDialogTheme(HWND hwnd)
|
||||
{
|
||||
HMODULE hUXTheme;
|
||||
|
@ -99,7 +79,6 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
|
|||
TOKEN_PRIVILEGES tkp;
|
||||
HANDLE hMutex;
|
||||
|
||||
/* check wether we're already running or not */
|
||||
hMutex = CreateMutexW(NULL, TRUE, L"taskmgrros");
|
||||
if (hMutex && GetLastError() == ERROR_ALREADY_EXISTS)
|
||||
{
|
||||
|
@ -152,10 +131,8 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
|
|||
CloseHandle(hToken);
|
||||
}
|
||||
|
||||
/* Load our settings from the registry */
|
||||
LoadSettings();
|
||||
|
||||
/* Initialize perf data */
|
||||
if (!PerfDataInitialize())
|
||||
return -1;
|
||||
|
||||
|
@ -167,7 +144,6 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
|
|||
|
||||
DialogBoxW(hInst, (LPCWSTR)IDD_TASKMGR_DIALOG, NULL, TaskManagerWndProc);
|
||||
|
||||
/* Save our settings to the registry */
|
||||
SaveSettings();
|
||||
PerfDataUninitialize();
|
||||
CloseHandle(hMutex);
|
||||
|
@ -176,7 +152,6 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Message handler for dialog box. */
|
||||
INT_PTR CALLBACK
|
||||
TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
|
@ -186,8 +161,6 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
switch (message) {
|
||||
case WM_INITDIALOG:
|
||||
// For now, the Help dialog menu item is disabled because of lacking of HTML Help support
|
||||
EnableMenuItem(GetMenu(hDlg), ID_HELP_TOPICS, MF_BYCOMMAND | MF_GRAYED);
|
||||
hMainWnd = hDlg;
|
||||
return OnCreate(hDlg);
|
||||
|
||||
|
@ -300,8 +273,6 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
case ID_PROCESS_PAGE_SETPRIORITY_LOW:
|
||||
DoSetPriority(IDLE_PRIORITY_CLASS);
|
||||
break;
|
||||
|
||||
/* ShutDown items */
|
||||
case ID_SHUTDOWN_STANDBY:
|
||||
ShutDown_StandBy();
|
||||
break;
|
||||
|
@ -329,7 +300,6 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
case ID_SHUTDOWN_EJECT_COMPUTER:
|
||||
ShutDown_EjectComputer();
|
||||
break;
|
||||
|
||||
case ID_HELP_ABOUT:
|
||||
OnAbout();
|
||||
break;
|
||||
|
@ -338,12 +308,11 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_ONTRAYICON:
|
||||
switch(lParam)
|
||||
{
|
||||
case WM_RBUTTONDOWN:
|
||||
{
|
||||
{
|
||||
POINT pt;
|
||||
BOOL OnTop;
|
||||
HMENU hMenu, hPopupMenu;
|
||||
|
@ -370,13 +339,12 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
DestroyMenu(hMenu);
|
||||
break;
|
||||
}
|
||||
}
|
||||
case WM_LBUTTONDBLCLK:
|
||||
TaskManager_OnRestoreMainWindow();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_NOTIFY:
|
||||
pnmh = (LPNMHDR)lParam;
|
||||
if ((pnmh->hwndFrom == hTabWnd) &&
|
||||
|
@ -396,7 +364,6 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_SIZING:
|
||||
/* Make sure the user is sizing the dialog */
|
||||
/* in an acceptable range */
|
||||
|
@ -420,18 +387,9 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
pRC->bottom = pRC->top + nMinimumHeight;
|
||||
}
|
||||
return TRUE;
|
||||
break;
|
||||
|
||||
case WM_SIZE:
|
||||
/* Handle the window sizing in it's own function */
|
||||
OnSize(wParam, LOWORD(lParam), HIWORD(lParam));
|
||||
break;
|
||||
|
||||
case WM_MOVE:
|
||||
/* Handle the window moving in it's own function */
|
||||
OnMove(wParam, LOWORD(lParam), HIWORD(lParam));
|
||||
break;
|
||||
|
||||
case WM_DESTROY:
|
||||
ShowWindow(hDlg, SW_HIDE);
|
||||
TrayIcon_RemoveIcon();
|
||||
|
@ -450,16 +408,13 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
if (hWindowMenu)
|
||||
DestroyMenu(hWindowMenu);
|
||||
return DefWindowProcW(hDlg, message, wParam, lParam);
|
||||
|
||||
case WM_TIMER:
|
||||
/* Refresh the performance data */
|
||||
PerfDataRefresh();
|
||||
RefreshApplicationPage();
|
||||
RefreshProcessPage();
|
||||
RefreshPerformancePage();
|
||||
TrayIcon_UpdateIcon();
|
||||
break;
|
||||
|
||||
case WM_SYSCOLORCHANGE:
|
||||
/* Forward WM_SYSCOLORCHANGE to common controls */
|
||||
SendMessage(hApplicationPageListCtrl, WM_SYSCOLORCHANGE, 0, 0);
|
||||
|
@ -512,7 +467,6 @@ BOOL OnCreate(HWND hWnd)
|
|||
|
||||
SendMessageW(hMainWnd, WM_SETICON, ICON_BIG, (LPARAM)LoadIconW(hInst, MAKEINTRESOURCEW(IDI_TASKMANAGER)));
|
||||
|
||||
/* Initialize the Windows Common Controls DLL */
|
||||
InitCommonControls();
|
||||
|
||||
/* Get the minimum window sizes */
|
||||
|
@ -533,15 +487,9 @@ BOOL OnCreate(HWND hWnd)
|
|||
|
||||
/* Create tab pages */
|
||||
hTabWnd = GetDlgItem(hWnd, IDC_TAB);
|
||||
#if 1
|
||||
hApplicationPage = CreateDialogW(hInst, MAKEINTRESOURCEW(IDD_APPLICATION_PAGE), hWnd, ApplicationPageWndProc); EnableDialogTheme(hApplicationPage);
|
||||
hProcessPage = CreateDialogW(hInst, MAKEINTRESOURCEW(IDD_PROCESS_PAGE), hWnd, ProcessPageWndProc); EnableDialogTheme(hProcessPage);
|
||||
hPerformancePage = CreateDialogW(hInst, MAKEINTRESOURCEW(IDD_PERFORMANCE_PAGE), hWnd, PerformancePageWndProc); EnableDialogTheme(hPerformancePage);
|
||||
#else
|
||||
hApplicationPage = CreateDialogW(hInst, MAKEINTRESOURCEW(IDD_APPLICATION_PAGE), hTabWnd, ApplicationPageWndProc); EnableDialogTheme(hApplicationPage);
|
||||
hProcessPage = CreateDialogW(hInst, MAKEINTRESOURCEW(IDD_PROCESS_PAGE), hTabWnd, ProcessPageWndProc); EnableDialogTheme(hProcessPage);
|
||||
hPerformancePage = CreateDialogW(hInst, MAKEINTRESOURCEW(IDD_PERFORMANCE_PAGE), hTabWnd, PerformancePageWndProc); EnableDialogTheme(hPerformancePage);
|
||||
#endif
|
||||
|
||||
/* Insert tabs */
|
||||
LoadStringW(hInst, IDS_TAB_APPS, szTemp, 256);
|
||||
|
@ -564,13 +512,6 @@ BOOL OnCreate(HWND hWnd)
|
|||
GetClientRect(hWnd, &rc);
|
||||
nOldWidth = rc.right;
|
||||
nOldHeight = rc.bottom;
|
||||
/* nOldStartX = rc.left; */
|
||||
/*nOldStartY = rc.top; */
|
||||
|
||||
#define PAGE_OFFSET_LEFT 17
|
||||
#define PAGE_OFFSET_TOP 72
|
||||
#define PAGE_OFFSET_WIDTH (PAGE_OFFSET_LEFT*2)
|
||||
#define PAGE_OFFSET_HEIGHT (PAGE_OFFSET_TOP+32)
|
||||
|
||||
if ((TaskManagerSettings.Left != 0) ||
|
||||
(TaskManagerSettings.Top != 0) ||
|
||||
|
@ -578,11 +519,6 @@ BOOL OnCreate(HWND hWnd)
|
|||
(TaskManagerSettings.Bottom != 0))
|
||||
{
|
||||
MoveWindow(hWnd, TaskManagerSettings.Left, TaskManagerSettings.Top, TaskManagerSettings.Right - TaskManagerSettings.Left, TaskManagerSettings.Bottom - TaskManagerSettings.Top, TRUE);
|
||||
#ifdef __GNUC__TEST__
|
||||
MoveWindow(hApplicationPage, TaskManagerSettings.Left + PAGE_OFFSET_LEFT, TaskManagerSettings.Top + PAGE_OFFSET_TOP, TaskManagerSettings.Right - TaskManagerSettings.Left - PAGE_OFFSET_WIDTH, TaskManagerSettings.Bottom - TaskManagerSettings.Top - PAGE_OFFSET_HEIGHT, FALSE);
|
||||
MoveWindow(hProcessPage, TaskManagerSettings.Left + PAGE_OFFSET_LEFT, TaskManagerSettings.Top + PAGE_OFFSET_TOP, TaskManagerSettings.Right - TaskManagerSettings.Left - PAGE_OFFSET_WIDTH, TaskManagerSettings.Bottom - TaskManagerSettings.Top - PAGE_OFFSET_HEIGHT, FALSE);
|
||||
MoveWindow(hPerformancePage, TaskManagerSettings.Left + PAGE_OFFSET_LEFT, TaskManagerSettings.Top + PAGE_OFFSET_TOP, TaskManagerSettings.Right - TaskManagerSettings.Left - PAGE_OFFSET_WIDTH, TaskManagerSettings.Bottom - TaskManagerSettings.Top - PAGE_OFFSET_HEIGHT, FALSE);
|
||||
#endif
|
||||
}
|
||||
if (TaskManagerSettings.Maximized)
|
||||
ShowWindow(hWnd, SW_MAXIMIZE);
|
||||
|
@ -595,7 +531,6 @@ BOOL OnCreate(HWND hWnd)
|
|||
hUpdateSpeedMenu = GetSubMenu(hViewMenu, 1);
|
||||
hCPUHistoryMenu = GetSubMenu(hViewMenu, 7);
|
||||
|
||||
/* Check or uncheck the always on top menu item */
|
||||
if (TaskManagerSettings.AlwaysOnTop) {
|
||||
CheckMenuItem(hEditMenu, ID_OPTIONS_ALWAYSONTOP, MF_BYCOMMAND|MF_CHECKED);
|
||||
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
|
||||
|
@ -604,19 +539,16 @@ BOOL OnCreate(HWND hWnd)
|
|||
SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
|
||||
}
|
||||
|
||||
/* Check or uncheck the minimize on use menu item */
|
||||
if (TaskManagerSettings.MinimizeOnUse)
|
||||
CheckMenuItem(hEditMenu, ID_OPTIONS_MINIMIZEONUSE, MF_BYCOMMAND|MF_CHECKED);
|
||||
else
|
||||
CheckMenuItem(hEditMenu, ID_OPTIONS_MINIMIZEONUSE, MF_BYCOMMAND|MF_UNCHECKED);
|
||||
|
||||
/* Check or uncheck the hide when minimized menu item */
|
||||
if (TaskManagerSettings.HideWhenMinimized)
|
||||
CheckMenuItem(hEditMenu, ID_OPTIONS_HIDEWHENMINIMIZED, MF_BYCOMMAND|MF_CHECKED);
|
||||
else
|
||||
CheckMenuItem(hEditMenu, ID_OPTIONS_HIDEWHENMINIMIZED, MF_BYCOMMAND|MF_UNCHECKED);
|
||||
|
||||
/* Check or uncheck the show 16-bit tasks menu item */
|
||||
if (TaskManagerSettings.Show16BitTasks)
|
||||
CheckMenuItem(hEditMenu, ID_OPTIONS_SHOW16BITTASKS, MF_BYCOMMAND|MF_CHECKED);
|
||||
else
|
||||
|
@ -672,7 +604,6 @@ BOOL OnCreate(HWND hWnd)
|
|||
/* 3- Set the menu item text to its formatted counterpart */
|
||||
ModifyMenuW(hShutMenu, ID_SHUTDOWN_LOGOFF, MF_BYCOMMAND | MF_STRING, ID_SHUTDOWN_LOGOFF, szLogOffItem);
|
||||
|
||||
/* Setup update speed */
|
||||
SetUpdateSpeed(hWnd);
|
||||
|
||||
/*
|
||||
|
@ -692,24 +623,11 @@ BOOL OnCreate(HWND hWnd)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/* OnMove()
|
||||
* This function handles all the moving events for the application
|
||||
* It moves every child window that needs moving
|
||||
*/
|
||||
void OnMove( WPARAM nType, int cx, int cy )
|
||||
{
|
||||
#ifdef __GNUC__TEST__
|
||||
MoveWindow(hApplicationPage, TaskManagerSettings.Left + PAGE_OFFSET_LEFT, TaskManagerSettings.Top + PAGE_OFFSET_TOP, TaskManagerSettings.Right - TaskManagerSettings.Left - PAGE_OFFSET_WIDTH, TaskManagerSettings.Bottom - TaskManagerSettings.Top - PAGE_OFFSET_HEIGHT, FALSE);
|
||||
MoveWindow(hProcessPage, TaskManagerSettings.Left + PAGE_OFFSET_LEFT, TaskManagerSettings.Top + PAGE_OFFSET_TOP, TaskManagerSettings.Right - TaskManagerSettings.Left - PAGE_OFFSET_WIDTH, TaskManagerSettings.Bottom - TaskManagerSettings.Top - PAGE_OFFSET_HEIGHT, FALSE);
|
||||
MoveWindow(hPerformancePage, TaskManagerSettings.Left + PAGE_OFFSET_LEFT, TaskManagerSettings.Top + PAGE_OFFSET_TOP, TaskManagerSettings.Right - TaskManagerSettings.Left - PAGE_OFFSET_WIDTH, TaskManagerSettings.Bottom - TaskManagerSettings.Top - PAGE_OFFSET_HEIGHT, FALSE);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* OnSize()
|
||||
* This function handles all the sizing events for the application
|
||||
* It re-sizes every window, and child window that needs re-sizing
|
||||
*/
|
||||
void OnSize( WPARAM nType, int cx, int cy )
|
||||
void OnSize(WPARAM nType, int cx, int cy)
|
||||
{
|
||||
int nParts[3];
|
||||
int nXDifference;
|
||||
|
@ -1027,18 +945,17 @@ LPWSTR GetLastErrorText(LPWSTR lpszBuf, DWORD dwSize)
|
|||
LANG_NEUTRAL,
|
||||
(LPWSTR)&lpszTemp,
|
||||
0,
|
||||
NULL );
|
||||
NULL);
|
||||
|
||||
/* supplied buffer is not long enough */
|
||||
if (!dwRet || ( (long)dwSize < (long)dwRet+14)) {
|
||||
if (!dwRet || ((long)dwSize < (long)dwRet+14))
|
||||
lpszBuf[0] = L'\0';
|
||||
} else {
|
||||
else {
|
||||
lpszTemp[lstrlenW(lpszTemp)-2] = L'\0'; /*remove cr and newline character */
|
||||
wsprintfW(lpszBuf, L"%s (0x%x)", lpszTemp, (int)GetLastError());
|
||||
}
|
||||
if (lpszTemp) {
|
||||
if (lpszTemp)
|
||||
LocalFree((HLOCAL)lpszTemp);
|
||||
}
|
||||
return lpszBuf;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,10 +6,6 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
#define RUN_APPS_PAGE
|
||||
|
@ -39,15 +35,14 @@ typedef struct
|
|||
BOOL HideWhenMinimized;
|
||||
BOOL Show16BitTasks;
|
||||
|
||||
/* Update speed settings */
|
||||
/* How many half-seconds in between updates (i.e. 0 - Paused, 1 - High, 2 - Normal, 4 - Low) */
|
||||
// 0 - Paused, 1 - High, 2 - Normal, 4 - Low
|
||||
DWORD UpdateSpeed;
|
||||
|
||||
/* Applications page settings */
|
||||
DWORD ViewMode;
|
||||
|
||||
/* Processes page settings */
|
||||
BOOL ShowProcessesFromAllUsers; /* Server-only? */
|
||||
BOOL ShowProcessesFromAllUsers;
|
||||
BOOL Columns[COLUMN_NMAX];
|
||||
int ColumnOrderArray[COLUMN_NMAX];
|
||||
int ColumnSizeArray[COLUMN_NMAX];
|
||||
|
@ -57,10 +52,8 @@ typedef struct
|
|||
/* Performance page settings */
|
||||
BOOL CPUHistory_OneGraphPerCPU;
|
||||
BOOL ShowKernelTimes;
|
||||
|
||||
} TASKMANAGER_SETTINGS, *LPTASKMANAGER_SETTINGS;
|
||||
|
||||
/* Global Variables: */
|
||||
extern HINSTANCE hInst; /* current instance */
|
||||
extern HWND hMainWnd; /* Main Window */
|
||||
extern HWND hStatusWnd; /* Status Bar Window */
|
||||
|
@ -71,7 +64,6 @@ extern int nOldWidth; /* Holds the previous client area width */
|
|||
extern int nOldHeight; /* Holds the previous client area height */
|
||||
extern TASKMANAGER_SETTINGS TaskManagerSettings;
|
||||
|
||||
/* Forward declarations of functions included in this code module: */
|
||||
INT_PTR CALLBACK TaskManagerWndProc(HWND, UINT, WPARAM, LPARAM);
|
||||
BOOL OnCreate(HWND hWnd);
|
||||
void OnSize(WPARAM nType, int cx, int cy);
|
||||
|
@ -83,9 +75,5 @@ void TaskManager_OnRestoreMainWindow(void);
|
|||
void TaskManager_OnViewUpdateSpeed(DWORD);
|
||||
void TaskManager_OnTabWndSelChange(void);
|
||||
VOID ShowWin32Error(DWORD dwError);
|
||||
LPTSTR GetLastErrorText( LPTSTR lpszBuf, DWORD dwSize );
|
||||
LPTSTR GetLastErrorText(LPTSTR lpszBuf, DWORD dwSize);
|
||||
DWORD EndLocalThread(HANDLE *hThread, DWORD dwThread);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
#include "precomp.h"
|
||||
|
||||
HICON TrayIcon_GetProcessorUsageIcon(void)
|
||||
HICON TrayIcon_GetProcessorUsageIcon(ULONG CpuUsage)
|
||||
{
|
||||
HICON hTrayIcon = NULL;
|
||||
HDC hScreenDC = NULL;
|
||||
|
@ -16,7 +16,6 @@ HICON TrayIcon_GetProcessorUsageIcon(void)
|
|||
HBITMAP hOldBitmap = NULL;
|
||||
HBITMAP hBitmapMask = NULL;
|
||||
ICONINFO iconInfo;
|
||||
ULONG CpuUsage;
|
||||
int nLinesToDraw;
|
||||
HBRUSH hBitmapBrush = NULL;
|
||||
RECT rc;
|
||||
|
@ -47,8 +46,6 @@ HICON TrayIcon_GetProcessorUsageIcon(void)
|
|||
*/
|
||||
hOldBitmap = SelectObject(hDC, hBitmap);
|
||||
|
||||
CpuUsage = PerfDataGetProcessorUsage();
|
||||
|
||||
/*
|
||||
* Calculate how many lines to draw
|
||||
* since we have 11 rows of space
|
||||
|
@ -97,16 +94,18 @@ done:
|
|||
return hTrayIcon;
|
||||
}
|
||||
|
||||
BOOL TrayIcon_AddIcon(void)
|
||||
BOOL TrayIcon_Update(DWORD dwMessage)
|
||||
{
|
||||
NOTIFYICONDATAW nid;
|
||||
ULONG CpuUsage;
|
||||
HICON hIcon = NULL;
|
||||
BOOL bRetVal;
|
||||
WCHAR szMsg[64];
|
||||
|
||||
memset(&nid, 0, sizeof(nid));
|
||||
|
||||
hIcon = TrayIcon_GetProcessorUsageIcon();
|
||||
CpuUsage = PerfDataGetProcessorUsage();
|
||||
hIcon = TrayIcon_GetProcessorUsageIcon(CpuUsage);
|
||||
|
||||
nid.cbSize = sizeof(nid);
|
||||
nid.hWnd = hMainWnd;
|
||||
|
@ -115,10 +114,10 @@ BOOL TrayIcon_AddIcon(void)
|
|||
nid.uCallbackMessage = WM_ONTRAYICON;
|
||||
nid.hIcon = hIcon;
|
||||
|
||||
LoadStringW(GetModuleHandleW(NULL), IDS_MSG_TRAYICONCPUUSAGE, szMsg, _countof(szMsg));
|
||||
wsprintfW(nid.szTip, szMsg, PerfDataGetProcessorUsage());
|
||||
LoadStringW(hInst, IDS_MSG_TRAYICONCPUUSAGE, szMsg, _countof(szMsg));
|
||||
wsprintfW(nid.szTip, szMsg, CpuUsage);
|
||||
|
||||
bRetVal = Shell_NotifyIconW(NIM_ADD, &nid);
|
||||
bRetVal = Shell_NotifyIconW(dwMessage, &nid);
|
||||
|
||||
if (hIcon)
|
||||
DestroyIcon(hIcon);
|
||||
|
@ -126,6 +125,11 @@ BOOL TrayIcon_AddIcon(void)
|
|||
return bRetVal;
|
||||
}
|
||||
|
||||
BOOL TrayIcon_AddIcon(VOID)
|
||||
{
|
||||
return TrayIcon_Update(NIM_ADD);
|
||||
}
|
||||
|
||||
BOOL TrayIcon_RemoveIcon(void)
|
||||
{
|
||||
NOTIFYICONDATAW nid;
|
||||
|
@ -143,28 +147,5 @@ BOOL TrayIcon_RemoveIcon(void)
|
|||
|
||||
BOOL TrayIcon_UpdateIcon(void)
|
||||
{
|
||||
NOTIFYICONDATAW nid;
|
||||
HICON hIcon = NULL;
|
||||
BOOL bRetVal;
|
||||
WCHAR szMsg[64];
|
||||
|
||||
memset(&nid, 0, sizeof(nid));
|
||||
|
||||
hIcon = TrayIcon_GetProcessorUsageIcon();
|
||||
|
||||
nid.cbSize = sizeof(nid);
|
||||
nid.hWnd = hMainWnd;
|
||||
nid.uID = 0;
|
||||
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
|
||||
nid.uCallbackMessage = WM_ONTRAYICON;
|
||||
nid.hIcon = hIcon;
|
||||
LoadStringW(hInst, IDS_MSG_TRAYICONCPUUSAGE, szMsg, _countof(szMsg));
|
||||
wsprintfW(nid.szTip, szMsg, PerfDataGetProcessorUsage());
|
||||
|
||||
bRetVal = Shell_NotifyIconW(NIM_MODIFY, &nid);
|
||||
|
||||
if (hIcon)
|
||||
DestroyIcon(hIcon);
|
||||
|
||||
return bRetVal;
|
||||
return TrayIcon_Update(NIM_MODIFY);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue