Use this command to repeat the last editing command carried out. The Repeat menu item changes to
14 | Can't Repeat if you cannot repeat your last action.
Use this command to switch to the next open document window. <<YourApp>> determines which window is next according to the order in which you opened the windows.
This area is provided to contain dockable toolbars, such as the default toolbar created for the application. Docking toolbars can be dragged onto or off this client area, and arrange themselves according to the space available.
Use this command to switch to the previous open document window. <<YourApp>> determines which window is previous according to the order in which you opened the windows.
Use this command to remove the currently selected data from the document and put it on the clipboard. This command is unavailable if there is no data currently selected.
14 |
15 |
Cutting data to the clipboard replaces the contents previously stored there.
<<YourApp>> displays a list of currently open document windows at the bottom of the
14 | Window menu. A checkmark appears in front of the document name of the active window. Choose a document from this list to make its window active.
Use this command to arrange the icons for minimized windows at the bottom of the main window. If there is an open document window at the bottom of the main window, then some or all of the icons may not be visible because they will be underneath this d
14 | ocument window.
Use this command to close the active window or dialog box.
Double-clicking a Control menu box is the same as choosing the Close command.
Note: If you have multiple windows open for a single document, the Close command on the document Control menu closes only one window at a time. You can close all windows at once with the Close command on the File menu.
Use this command to display the opening screen of help. From the opening screen, you can jump to step-by-step instructions for using <<YourApp>> and various types of reference information.
14 |
15 |
Once you open help, you can click the Contents button whenever you want to return to the opening screen.
Displayed at the right and bottom edges of the document window. The scroll boxes inside the scrollbars indicate your vertical and horizontal location in the document. You can use the mouse to scroll to other parts of the document.
14 |
15 |
<< Describe the actions of the various parts of the scrollbar, according to how they behave in your application. >>
Use this command to send the active document through e-mail. This command presents a mail window with the active document attached to it. You may then fill out the
14 | To field, Subject field, and so on, and add text to the body of the message. When you are finished, you
15 | can click the Send button to send the message.
Use this command to obtain help on some portion of <<YourApp>>. When you choose the
15 | toolbar's Context Help button, the mouse pointer will change to an arrow and question mark. Then click somewhere in the <<YourApp>> window, such as another
16 | toolbar button. The help topic will be shown for the item you clicked.
<< If you want to author help specific to each message box prompt, then remove the AFX_HIDP_xxx values from the [ALIAS] section of your
16 | .hpj file, and author a topic for each AFX_HIDP_xxx value. For example, AFX_HIDP_INVALID_FILENAME is the help topic for the
17 | Invalid Filename message box. >>
Use the numbers and filenames listed at the bottom of the File menu to open the last four documents you closed. Choose the number that corresponds with the document you want to open.
Use this command to end your <<YourApp>> session. You can also use the
18 | Close command on the application Control menu. <<YourApp>> prompts you to save documents with unsaved changes.
Use this command to open a new window with the same contents as the active window. You can open multiple document windows to display different parts or views of a document at the same time. If you change the contents in one window, all other windows
14 | containing the same document reflect those changes. When you open a new window, it becomes the active window and is displayed on top of all other open windows.
<< Your application's user interface for Undo may differ from the one described below. Modify this help text accordingly. >>
14 |
15 |
Use this command to reverse the last editing action, if possible. The name of the command changes, depending on what the last action was. The
16 | Undo command changes to Can't Undo on the menu if you cannot reverse your last action.
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: mihaimoga
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
13 | custom: "https://www.paypal.com/donate/?business=X57JM9BLZFXXA&amount=10&no_recurring=0&item_name=IntelliTask¤cy_code=EUR"
14 |
--------------------------------------------------------------------------------
/hlp/hid_window_split.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | (Split Command (Window menu))
6 |
7 |
8 |
9 |
10 |
11 |
Split Command (Window menu)
12 |
13 |
Use this command to split the active window into panes. You may then use the mouse or the keyboard arrows to move the splitter bars. When you are finished, press the mouse button or enter to leave the splitter bars in their new location. Pressing es
14 | cape keeps the splitter bars in their original location. << In a single document interface application, this command will appear on the
15 | View menu. >>
The toolbar is displayed across the top of the application window, below the menu bar. The toolbar provides quick mouse access to many tools used in <<YourApp>>,
19 |
20 |
To hide or display the toolbar, click Toolbar from the View menu.
Use this command to display and hide the toolbar, which includes buttons for some of the most common commands in <<YourApp>>, such as
18 | File Open. A checkmark appears next to the menu item when the toolbar is displayed.
Use this command to open an existing document in a new window. You can open multiple documents at once. Use the
18 | Window menu to switch among the multiple open documents. See Window 1, 2, ... command.
19 |
20 |
You can create new documents with the New command.
Use this command to display and hide the status bar, which describes the action to be executed by the selected menu item or
18 | pressed toolbar button, and keyboard latch state. A checkmark appears next to the menu item when the
19 | status bar is displayed.
Use this command to create a new document in <<YourApp>>. Select the type of new file you want to create in the File New dialog box. << Remove previous sentence if your application supports only
18 | one document type. >>
19 |
20 |
You can open an existing document with the Open command.
Use this command to save the active document to its current name and directory. When you save a document for the first time, <<YourApp>> displays the Save As dialog box so you can name your document. If
18 | you want to change the name and directory of an existing document before you save it, choose the Save As command.
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Messages.h:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | #pragma once
17 |
18 | static constexpr UINT MSG_NAVIGATE = WM_APP + 123;
19 | static constexpr UINT MSG_RUN_ASYNC_CALLBACK = WM_APP + 124;
--------------------------------------------------------------------------------
/hlp/hid_file_close.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | (File Close command)
6 |
7 |
8 |
9 |
10 |
11 |
14 |
15 |
Close command (File menu)
16 |
17 |
Use this command to close all windows containing the active document. <<YourApp>> suggests that you save changes to your document before you close it. If you close a document without saving, you lose all changes made since the last time y
18 | ou saved it. Before closing an untitled document, <<YourApp>> displays the Save As dialog box and suggests that you name and save the document.
The following options allow you to specify which file to open:
14 |
15 |
File Name
16 |
17 |
Specifies the file you want to open. This box lists files with the extension you select in the
18 | List Files of Type field.
19 |
20 |
List Files of Type
21 |
22 |
Specifies the type of file you want to open:
23 |
24 |
<< List your application's file types here. >>
25 |
26 |
Drives
27 |
28 |
Specifies the drive in which <<YourApp>> stores the file that you want to open.
29 |
30 |
Directories
31 |
32 |
Specifies the directory in which <<YourApp>> stores the file that you want to open.
33 |
34 |
Network
35 |
36 |
Click this button to connect to a network location, assigning it a new drive letter.
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/SortListCtrl.h:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | #pragma once
17 |
18 | #include "ProcessList.h"
19 |
20 | // CSortListCtrl
21 |
22 | class CSortListCtrl : public CMFCListCtrl
23 | {
24 | DECLARE_DYNAMIC(CSortListCtrl)
25 |
26 | public:
27 | CSortListCtrl();
28 | virtual ~CSortListCtrl();
29 |
30 | protected:
31 | virtual int OnCompareItems(LPARAM lParam1, LPARAM lParam2, int iColumn);
32 |
33 | public:
34 | CSystemSnapshot* m_pSystemSnapshot;
35 |
36 | protected:
37 | DECLARE_MESSAGE_MAP()
38 | };
39 |
--------------------------------------------------------------------------------
/hlp/afx_hidd_filesave.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | (File Save As dialog box)
6 |
7 |
8 |
9 |
10 |
11 |
File Save As dialog box
12 |
13 |
The following options allow you to specify the name and location of the file you're about to save:
14 |
15 |
File Name
16 |
17 |
Specifies a file name to save a document with a different name. <<YourApp>> adds the extension you specify in the
18 | Save File As Type box.
19 |
20 |
Drives
21 |
22 |
Specifies the drive in which you want to store the document.
23 |
24 |
Directories
25 |
26 |
Specifies the directory in which you want to store the document.
27 |
28 |
Network
29 |
30 |
Click this button to connect to a network location, assigning it a new drive letter.
31 |
32 |
<< Add other File Save As dialog box options depending on which ones your application chooses
33 | through the OFN_ flags of the OPENFILENAME structure used by the CFileDialog. >>
<< Write application-specific help here that provides an overview of how the user should modify a document using your application.
14 |
15 |
If your application supports multiple document types and you want to have a distinct help topic for each, then use the help context
16 | ID generated by running the MAKEHELP.BAT file produced by the application
17 | wizard. Alternately, run MAKEHM as follows:
18 |
19 |
makehm IDR_HIDR_,0x2000 resource.h
20 |
21 |
If the IDR_ symbol for one of your document types is, for example, IDR_CHARTTYPE, then the help context
22 | ID generated by MAKEHM will be HIDR_CHARTTYPE.
23 |
24 |
Note: The application wizard defines the HIDR_DOC1TYPE help context ID used by this help topic for the first document type supported by your application.
25 | The application wizard produces an alias in the .hpj file for your application, mapping HIDR_DOC1TYPE to the HIDR_ produced by MAKEHM for that document type. >>
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/ChildView.h:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | // ChildView.h : interface of the CChildView class
17 | //
18 |
19 | #pragma once
20 |
21 | // CChildView window
22 |
23 | class CChildView : public CWnd
24 | {
25 | // Construction
26 | public:
27 | CChildView();
28 |
29 | // Attributes
30 | public:
31 |
32 | // Operations
33 | public:
34 |
35 | // Overrides
36 | protected:
37 | virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
38 |
39 | // Implementation
40 | public:
41 | virtual ~CChildView();
42 |
43 | // Generated message map functions
44 | protected:
45 | afx_msg void OnPaint();
46 | DECLARE_MESSAGE_MAP()
47 | };
48 |
--------------------------------------------------------------------------------
/hlp/menu_window.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | (Window menu commands)
6 |
7 |
8 |
9 |
10 |
11 |
Window menu commands
12 |
13 |
The Window menu offers the following commands, which enable you to arrange multiple views of multiple documents in the application window:
42 |
43 |
--------------------------------------------------------------------------------
/Setup/README.md:
--------------------------------------------------------------------------------
1 |
2 | # IntelliTask Setup
3 |
4 | This folder contains installation packages for **IntelliTask**, a lightweight and efficient task management tool for Windows. IntelliTask helps users organize, track, and prioritize tasks with a simple and intuitive interface.
5 |
6 | ## 📦 Installation Options
7 |
8 | You can install IntelliTask using one of the following methods:
9 |
10 | ### Option 1: MSI Installer
11 |
12 | - **Download**: [IntelliTaskSetup.msi](https://www.moga.doctor/freeware/IntelliTaskSetup.msi)
13 | - **Instructions**:
14 | 1. Download the `.msi` installer.
15 | 2. Right-click the file and select **Run as administrator**.
16 | 3. Follow the installation wizard to complete the setup.
17 |
18 | ### Option 2: Portable ZIP Archive
19 |
20 | - **Download**: [IntelliTask.zip](https://www.moga.doctor/freeware/IntelliTask.zip)
21 | - **Instructions**:
22 | 1. Download and extract the ZIP file.
23 | 2. Navigate to the extracted folder.
24 | 3. Run `IntelliTask.exe` to launch the application.
25 |
26 | ## 🖥️ Requirements
27 |
28 | - Windows operating system
29 | - Administrative privileges (for MSI installation)
30 |
31 | ## 📁 Contents
32 |
33 | - `IntelliTaskSetup.msi` – Windows installer package
34 | - `IntelliTask.zip` – Portable version of IntelliTask
35 |
36 | ## 📄 License
37 |
38 | This project is licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.html).
39 |
40 | ---
41 |
42 | > Choose the installation method that best suits your needs and start managing your tasks with IntelliTask.
43 |
--------------------------------------------------------------------------------
/WebBrowserDlg.h:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | #pragma once
17 | #include "EdgeWebBrowser.h"
18 |
19 | // CWebBrowserDlg dialog
20 |
21 | class CWebBrowserDlg : public CDialogEx
22 | {
23 | DECLARE_DYNAMIC(CWebBrowserDlg)
24 |
25 | public:
26 | CWebBrowserDlg(CWnd* pParent = nullptr); // standard constructor
27 | virtual ~CWebBrowserDlg();
28 |
29 | // Dialog Data
30 | #ifdef AFX_DESIGN_TIME
31 | enum { IDD = IDD_WebBrowserDlg };
32 | #endif
33 |
34 | protected:
35 | CWebBrowser m_pCustomControl;
36 |
37 | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
38 |
39 | protected:
40 | // Generated message map functions
41 | virtual BOOL OnInitDialog();
42 | afx_msg void OnDestroy();
43 | afx_msg void OnSize(UINT nType, int cx, int cy);
44 |
45 | DECLARE_MESSAGE_MAP()
46 | };
47 |
--------------------------------------------------------------------------------
/hlp/hid_sc_tasklist.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | (Switch to command (application Control menu))
6 |
7 |
8 |
9 |
10 |
11 |
Switch to command (application Control menu)
12 |
13 |
Use this command to display a list of all open applications. Use this task
14 | List to switch to or close an application on the list.
15 |
16 |
17 |
Dialog Box Options
18 |
19 |
When you choose the Switch To command, you will be presented with a dialog box with the following options:
20 |
21 |
Task List
22 |
23 |
Specifies the application you want to switch to or close.
24 |
25 |
Switch To
26 |
27 |
Makes the selected application active.
28 |
29 |
End Task
30 |
31 |
Closes the selected application.
32 |
33 |
Cancel
34 |
35 |
Closes the Task List box.
36 |
37 |
Cascade
38 |
39 |
Arranges open applications so they overlap and you can see each title bar. This option does not affect applications reduced to icons.
40 |
41 |
Tile
42 |
43 |
Arranges open applications into windows that do not overlap. This option does not affect applications reduced to icons.
44 |
45 |
Arrange Icons
46 |
47 |
Arranges the icons of all minimized applications across the bottom of the screen.
The status bar is displayed at the bottom of the <<YourApp>> window. To display or hide the status bar, use the
18 | Status Bar command in the View menu.
19 |
20 |
The left area of the status bar describes actions of menu items as you use the arrow keys to navigate through menus. This area similarly shows messages that describe the actions of toolbar buttons as you
21 | press them, before releasing them. If after viewing the description of the toolbar button command you wish not to execute the command, then release the mouse button while the pointer is off the toolbar button.
22 |
23 |
The right areas of the status bar indicate which of the following keys are latched down:
24 |
25 |
Indicator Description
26 |
27 |
CAP The Caps Lock key is latched down.
28 |
29 |
NUM The Num Lock key is latched down.
30 |
31 |
SCRL The Scroll Lock key is latched down.
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/stdafx.cpp:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | // This MFC Samples source code demonstrates using MFC Microsoft Office Fluent User Interface
17 | // (the "Fluent UI") and is provided only as referential material to supplement the
18 | // Microsoft Foundation Classes Reference and related electronic documentation
19 | // included with the MFC C++ library software.
20 | // License terms to copy, use or distribute the Fluent UI are available separately.
21 | // To learn more about our Fluent UI licensing program, please visit
22 | // http://msdn.microsoft.com/officeui.
23 | //
24 | // Copyright (C) Microsoft Corporation
25 | // All rights reserved.
26 |
27 | // stdafx.cpp : source file that includes just the standard includes
28 | // IntelliTask.pch will be the pre-compiled header
29 | // stdafx.obj will contain the pre-compiled type information
30 |
31 | #include "stdafx.h"
32 |
33 |
34 |
--------------------------------------------------------------------------------
/CpuUsage.h:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | #pragma once
17 |
18 | #include
19 |
20 | class CpuUsage
21 | {
22 | public:
23 | CpuUsage(void);
24 | DOUBLE GetUsage();
25 | DWORD GetProcessID() { return m_dwProcessID; }
26 | void SetProcessID(DWORD dwProcessID) { m_dwProcessID = dwProcessID; }
27 |
28 | private:
29 | ULONGLONG SubtractTimes(const FILETIME& ftA, const FILETIME& ftB);
30 | bool EnoughTimePassed();
31 | inline bool IsFirstRun() const { return (m_dwLastRun == 0); }
32 |
33 | protected:
34 | DWORD m_dwProcessID;
35 | //system total times
36 | FILETIME m_ftPrevSysIdle;
37 | FILETIME m_ftPrevSysKernel;
38 | FILETIME m_ftPrevSysUser;
39 | //process times
40 | FILETIME m_ftPrevProcKernel;
41 | FILETIME m_ftPrevProcUser;
42 | // last results
43 | DOUBLE m_nCpuUsage;
44 | ULONGLONG m_dwLastRun;
45 | int m_nProcessors;
46 |
47 | volatile LONG m_lRunCount;
48 | };
49 |
--------------------------------------------------------------------------------
/targetver.h:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | // This MFC Samples source code demonstrates using MFC Microsoft Office Fluent User Interface
17 | // (the "Fluent UI") and is provided only as referential material to supplement the
18 | // Microsoft Foundation Classes Reference and related electronic documentation
19 | // included with the MFC C++ library software.
20 | // License terms to copy, use or distribute the Fluent UI are available separately.
21 | // To learn more about our Fluent UI licensing program, please visit
22 | // http://msdn.microsoft.com/officeui.
23 | //
24 | // Copyright (C) Microsoft Corporation
25 | // All rights reserved.
26 |
27 | #pragma once
28 |
29 | // Including SDKDDKVer.h defines the highest available Windows platform.
30 |
31 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
32 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
33 |
34 | #include
35 |
--------------------------------------------------------------------------------
/IntelliTask.h:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | // IntelliTask.h : main header file for the IntelliTask application
17 | //
18 | #pragma once
19 |
20 | #ifndef __AFXWIN_H__
21 | #error "include 'stdafx.h' before including this file for PCH"
22 | #endif
23 |
24 | #include "resource.h" // main symbols
25 | #include "sinstance.h"
26 |
27 | // CIntelliTaskApp:
28 | // See IntelliTask.cpp for the implementation of this class
29 | //
30 |
31 | class CIntelliTaskApp : public CWinAppEx
32 | {
33 | public:
34 | CIntelliTaskApp();
35 |
36 | public:
37 | CInstanceChecker m_pInstanceChecker;
38 |
39 | // Overrides
40 | public:
41 | virtual BOOL InitInstance();
42 | virtual int ExitInstance();
43 |
44 | // Implementation
45 | bool EnableFullAccess();
46 |
47 | public:
48 | virtual void PreLoadState();
49 | virtual void LoadCustomState();
50 | virtual void SaveCustomState();
51 |
52 | afx_msg void OnAppAbout();
53 | DECLARE_MESSAGE_MAP()
54 | };
55 |
56 | extern CIntelliTaskApp theApp;
57 |
--------------------------------------------------------------------------------
/CheckForUpdatesDlg.h:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | #pragma once
17 |
18 | #include "VersionInfo.h"
19 |
20 | // CCheckForUpdatesDlg dialog
21 |
22 | class CCheckForUpdatesDlg : public CDialogEx
23 | {
24 | DECLARE_DYNAMIC(CCheckForUpdatesDlg)
25 |
26 | public:
27 | CCheckForUpdatesDlg(CWnd* pParent = nullptr); // standard constructor
28 | virtual ~CCheckForUpdatesDlg();
29 |
30 | // Dialog Data
31 | #ifdef AFX_DESIGN_TIME
32 | enum { IDD = IDD_CheckForUpdatesDlg };
33 | #endif
34 |
35 | public:
36 | CStatic m_ctrlStatusMessage;
37 | CProgressCtrl m_ctrlProgress;
38 | CVersionInfo m_pVersionInfo;
39 | protected:
40 | DWORD m_nUpdateThreadID;
41 | HANDLE m_hUpdateThread;
42 | UINT_PTR m_nTimerID;
43 |
44 | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
45 |
46 | protected:
47 | // Generated message map functions
48 | virtual BOOL OnInitDialog();
49 | virtual void OnCancel();
50 | afx_msg void OnTimer(UINT_PTR nIDEvent);
51 |
52 | DECLARE_MESSAGE_MAP()
53 | };
54 |
--------------------------------------------------------------------------------
/EnumProgramsDlg.h:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | #pragma once
17 |
18 | #include "WndResizer.h"
19 |
20 | // CEnumProgramsDlg dialog
21 |
22 | class CSortStringArray : public CStringArray
23 | {
24 | public:
25 | void Sort();
26 | private:
27 | BOOL CompareAndSwap(int pos);
28 | };
29 |
30 | class CEnumProgramsDlg : public CDialogEx
31 | {
32 | DECLARE_DYNAMIC(CEnumProgramsDlg)
33 |
34 | public:
35 | CEnumProgramsDlg(CWnd* pParent = nullptr); // standard constructor
36 | virtual ~CEnumProgramsDlg();
37 |
38 | // Dialog Data
39 | #ifdef AFX_DESIGN_TIME
40 | enum { IDD = IDD_ENUMPROGRAMS_DIALOG };
41 | #endif
42 | CWndResizer m_pWindowResizer;
43 | CSortStringArray m_arrPrograms;
44 | CListCtrl m_ctrlPrograms;
45 |
46 | protected:
47 | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
48 |
49 | protected:
50 | virtual BOOL OnInitDialog();
51 | afx_msg void OnDestroy();
52 | afx_msg void OnBnClickedVersion();
53 | afx_msg void OnClickedRefresh();
54 |
55 | DECLARE_MESSAGE_MAP()
56 | public:
57 | };
58 |
--------------------------------------------------------------------------------
/ChildView.cpp:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | // ChildView.cpp : implementation of the CChildView class
17 | //
18 |
19 | #include "stdafx.h"
20 | #include "IntelliTask.h"
21 | #include "ChildView.h"
22 |
23 | #ifdef _DEBUG
24 | #define new DEBUG_NEW
25 | #endif
26 |
27 | // CChildView
28 |
29 | CChildView::CChildView()
30 | {
31 | }
32 |
33 | CChildView::~CChildView()
34 | {
35 | }
36 |
37 | BEGIN_MESSAGE_MAP(CChildView, CWnd)
38 | ON_WM_PAINT()
39 | END_MESSAGE_MAP()
40 |
41 | // CChildView message handlers
42 |
43 | BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs)
44 | {
45 | if (!CWnd::PreCreateWindow(cs))
46 | return FALSE;
47 |
48 | cs.dwExStyle |= WS_EX_CLIENTEDGE;
49 | cs.style &= ~WS_BORDER;
50 | cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS,
51 | ::LoadCursor(nullptr, IDC_ARROW), reinterpret_cast(COLOR_WINDOW+1), nullptr);
52 |
53 | return TRUE;
54 | }
55 |
56 | void CChildView::OnPaint()
57 | {
58 | CPaintDC dc(this); // device context for painting
59 |
60 | // TODO: Add your message handler code here
61 |
62 | // Do not call CWnd::OnPaint() for painting messages
63 | }
64 |
--------------------------------------------------------------------------------
/MFCListView.h:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | #pragma once
17 |
18 | #include "SortListCtrl.h"
19 |
20 | // CMFCListView form view
21 |
22 | class CMFCListView : public CFormView
23 | {
24 | DECLARE_DYNCREATE(CMFCListView)
25 |
26 | protected:
27 | CMFCListView(); // protected constructor used by dynamic creation
28 | virtual ~CMFCListView();
29 |
30 | public:
31 | enum { IDD = IDD_MFCLISTVIEW };
32 | #ifdef _DEBUG
33 | virtual void AssertValid() const;
34 | #ifndef _WIN32_WCE
35 | virtual void Dump(CDumpContext& dc) const;
36 | #endif
37 | #endif
38 |
39 | protected:
40 | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
41 | public:
42 | afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
43 | afx_msg void OnDestroy();
44 | afx_msg void OnSize(UINT nType, int cx, int cy);
45 | afx_msg BOOL OnEraseBkgnd(CDC* pDC);
46 | virtual void OnInitialUpdate();
47 | virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
48 | CSortListCtrl& GetListCtrl() { return m_mfcListCtrl; }
49 |
50 | protected:
51 | CSortListCtrl m_mfcListCtrl;
52 |
53 | DECLARE_MESSAGE_MAP()
54 | };
55 |
--------------------------------------------------------------------------------
/ProcessView.h:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | #pragma once
17 |
18 | #include "MFCListView.h"
19 | #include "ProcessList.h"
20 |
21 | class CMainFrame;
22 |
23 | // CProcessView view
24 |
25 | class CProcessView : public CMFCListView
26 | {
27 | DECLARE_DYNCREATE(CProcessView)
28 |
29 | public:
30 | CProcessView(); // protected constructor used by dynamic creation
31 | virtual ~CProcessView();
32 |
33 | public:
34 | #ifdef _DEBUG
35 | virtual void AssertValid() const;
36 | #ifndef _WIN32_WCE
37 | virtual void Dump(CDumpContext& dc) const;
38 | #endif
39 | #endif
40 |
41 | public:
42 | virtual void OnInitialUpdate();
43 | afx_msg void OnDestroy();
44 | afx_msg void OnSize(UINT nType, int cx, int cy);
45 | afx_msg void OnTimer(UINT_PTR nIDEvent);
46 | afx_msg void OnDblClickEntry(NMHDR *pNMHDR, LRESULT *pResult);
47 |
48 | public:
49 | void ResizeListCtrl();
50 | void DoubleClickEntry(int nIndex);
51 | CString FormatSize(ULONGLONG nFormatSize);
52 | bool Refresh();
53 |
54 | public:
55 | bool m_bInitialized;
56 | CMainFrame* m_pMainFrame;
57 | CSystemSnapshot m_pSystemSnapshot;
58 | UINT m_nRefreshTimerID;
59 |
60 | protected:
61 | DECLARE_MESSAGE_MAP()
62 | };
63 |
--------------------------------------------------------------------------------
/old/resource.h:
--------------------------------------------------------------------------------
1 | //{{NO_DEPENDENCIES}}
2 | // Microsoft Developer Studio generated include file.
3 | // Used by DevMgr.rc
4 | //
5 | #define IDD_DIALOG1 101
6 | #define IDI_MYCOMP 102
7 | #define IDB_MYCOMP 103
8 | #define IDD_DIALOG2 104
9 | #define IDC_TREE1 1000
10 | #define IDC_ADDBTN 1001
11 | #define IDC_DELBTN 1002
12 | #define IDC_REFBTN 1003
13 | #define IDC_RADIO1 1004
14 | #define IDC_RADIO2 1005
15 | #define IDC_LIST1 1006
16 | #define IDC_EXIT 1007
17 | #define IDC_INSTALLBTN 1008
18 | #define IDC_COPYPATHBTN 1008
19 | #define IDC_IEXIT 1009
20 | #define IDC_DISABLEBTN 1009
21 | #define IDC_RESETBTN 1010
22 | #define IDC_OPENINFBTN 1011
23 | #define IDC_INFLBL 1012
24 | #define IDC_PARAMOPT1 1013
25 | #define IDC_PARAMOPT2 1014
26 | #define IDC_PARAMOPT3 1015
27 | #define IDC_PARAMOPT4 1016
28 | #define IDC_PARAMOPT5 1017
29 | #define IDC_PARAMOPT6 1018
30 | #define IDC_PARAMOPT7 1019
31 | #define IDC_PARAMOPT8 1020
32 | #define IDC_PARAMOPT9 1021
33 | #define IDC_LIST2 1022
34 | #define IDC_ENABLEDRVBTN 1022
35 | #define IDC_MOREINFOBTN 1023
36 | #define IDC_DRVNAMETXT 1025
37 | #define IDC_CHECK1 1026
38 |
39 | // Next default values for new objects
40 | //
41 | #ifdef APSTUDIO_INVOKED
42 | #ifndef APSTUDIO_READONLY_SYMBOLS
43 | #define _APS_NEXT_RESOURCE_VALUE 106
44 | #define _APS_NEXT_COMMAND_VALUE 40001
45 | #define _APS_NEXT_CONTROL_VALUE 1027
46 | #define _APS_NEXT_SYMED_VALUE 101
47 | #endif
48 | #endif
49 |
--------------------------------------------------------------------------------
/old/Util.h:
--------------------------------------------------------------------------------
1 | #ifndef __ICE_UTILLIB_H
2 | #define __ICE_UTILLIB_H
3 | //
4 | #pragma once
5 | //
6 | #ifdef __cplusplus
7 | extern "C" {
8 | #endif
9 | //
10 | #include
11 | #include
12 | #include
13 | #include
14 | #include
15 | //#include "resource.h"
16 | //
17 | #pragma comment(lib, "comctl32.lib")
18 | //
19 | UINT IsListViewClkEvent(const UINT, NMHDR*);
20 | UINT IsListViewDBClkEvent(const UINT, NMHDR*);
21 | void ListViewDeleteItem(HWND hList, const short wItem);
22 | void ListViewGetItemText(HWND, const int, char*);
23 | void ListViewGetSpecItem(HWND, const int, const int, char*);
24 | void ListViewInsertColumnText(HWND, const short, const int, char*, const BOOL);
25 | void ListViewAddColumnImageText(HWND, const UINT, const short, const int, char*, const BOOL);
26 | void ListViewInsertItemText(HWND, const int, const int, char*);
27 | void ListViewSetExtStyle(HWND, const DWORD);
28 | void ListViewSetSelectItem(HWND, const short);
29 | void ListViewRemoveAllItems(HWND);
30 | void ListViewRemoveItem(HWND, const UINT, const int);
31 | void ListViewRemoveColumn(HWND, const UINT, const int);
32 | int ListViewGetItemSelect(HWND);
33 | int ListViewGetItemCount(HWND);
34 | //
35 | HTREEITEM TreeViewInsertRootText(HWND, UINT, HTREEITEM, HTREEITEM, char*);
36 | HTREEITEM TreeViewFindChild(HWND, HTREEITEM, const char*);
37 | HTREEITEM MakeDeviceRootTree(SP_CLASSIMAGELIST_DATA, const UINT, const UINT);
38 | UINT IsTreeViewClkEvent(const UINT, NMHDR*);
39 | UINT IsTreeViewSelectChanged(const UINT, NMHDR*);
40 | void TreeViewGetSelectText(HWND, NMHDR*, TVITEM*);
41 | void TreeViewExpand(HWND, HTREEITEM, const BOOL);
42 | void TreeViewRemoveAllNodes(HWND, const UINT);
43 | //
44 | void SetOverlayImage(HIMAGELIST, const int, const int);
45 | int GetImageCount(HIMAGELIST);
46 | int ListViewSetImageList(HWND, const int, LPARAM);
47 | //
48 | void ShowErrorMsg(HWND, const DWORD, const char*);
49 | void DisableCloseBox(HWND);
50 | void WaitCursor(const char);
51 | //
52 | BOOL AnsiToUnicode(const char*, const short, wchar_t*, const short);
53 | BOOL UnicodeToAnsi(const wchar_t*, const short, char*, const short);
54 | //
55 | void FindComma(char*);
56 | void StrLTrim(char*);
57 | void StrRTrim(char*);
58 | void StrRight(char*, short);
59 | void ConvertGUIDToString(const GUID, char*);
60 | //
61 | #ifdef __cplusplus
62 | }
63 | #endif
64 | //
65 | #endif
66 |
--------------------------------------------------------------------------------
/old/Setup.h:
--------------------------------------------------------------------------------
1 | #ifndef __ICE_SETUP_H
2 | #define __ICE_SETUP_H
3 | //
4 | #ifdef __cplusplus
5 | extern "C" {
6 | #endif
7 | //
8 | #pragma once
9 | //
10 | #include "devmgr.h"
11 | #include
12 | #include
13 | #include
14 | #include
15 | #include "gettypeinfo.h"
16 | #include "util.h"
17 | //
18 | #pragma comment(lib, "setupapi.lib")
19 | #pragma comment(lib, "newdev.lib")
20 | #pragma comment(lib, "shell32.lib")
21 | //
22 | typedef struct _tagDEVICE_ORDER
23 | {
24 | char szDevName[LINE_LEN];
25 | struct _tagDEVICE_ORDER *pNext;
26 | } DEVICE_ORDER, *PDEVICE_ORDER;
27 | //
28 | typedef struct _tagDEVLIST
29 | {
30 | GUID guid;
31 | short wOrder;
32 | short wIndex;
33 | char szInstallID[LINE_LEN];
34 | char szName[MAX_PATH];
35 | char szPath[MAX_PATH];
36 | struct _tagDEVLIST *pNext;
37 | }DEVICE_LIST, *PDEVICE_LIST;
38 | //
39 | void InitialImageData();
40 | void ListImageDataInitial(const UINT);
41 | char EnumWDMDriver(const UINT, const UINT);
42 | void GetDriverDetialInfo(HTREEITEM, const UINT, const char *, const int, const int);
43 | void GetDeviceInstanceID(HDEVINFO, SP_DEVINFO_DATA*, char*);
44 | void GetDeviceInterfaceInfo(HDEVINFO, SP_DEVINFO_DATA, char*);
45 | void GetOtherInfo(GUID, const short, const UINT, const UINT);
46 | void FindSpecResource(const DEVINST, const DWORD, const short, const UINT);
47 | //
48 | HTREEITEM MakeRootTree();
49 | //
50 | char InitialDeviceOrder();
51 | DEVICE_ORDER* AllocNewDeviceOrderNode();
52 | char AddNewDeviceOrderNode(const char*);
53 | short FindDeviceOrder(const char*);
54 | void FreeAllDeviceOrderNode();
55 | //
56 | char InitialDeviceList();
57 | DEVICE_LIST* AllocNewDeviceNode();
58 | char AddNewDeviceNode(const GUID, const char*, const char*,
59 | const char*, const int, const short);
60 | char FindDeviceName(const char*, const UINT, const UINT);
61 | void GetDeviceDetailInfo(DEVICE_LIST*);
62 | void DisplayDriverDetailInfo(HTREEITEM, const UINT,
63 | const char*, const int, const int);
64 | void FreeAllocDeviceNode();
65 | //
66 | void GetMemoryResource(MEM_DES*, const ULONG, const UINT);
67 | void GetIOResource(IO_DES*, const ULONG, const UINT);
68 | void GetDMAResource(DMA_DES*, const ULONG, const UINT);
69 | void GetIRQResource(IRQ_DES*, const ULONG, const UINT);
70 | //
71 | void GetMoreInformation(HDEVINFO, SP_DEVINFO_DATA, const UINT);
72 | //
73 | #ifdef __cplusplus
74 | }
75 | #endif
76 | //
77 | #endif
78 |
--------------------------------------------------------------------------------
/WebBrowserDlg.cpp:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | // WebBrowserDlg.cpp : implementation file
17 | //
18 |
19 | #include "stdafx.h"
20 | #include "IntelliTask.h"
21 | #include "WebBrowserDlg.h"
22 |
23 | // CWebBrowserDlg dialog
24 |
25 | IMPLEMENT_DYNAMIC(CWebBrowserDlg, CDialogEx)
26 |
27 | CWebBrowserDlg::CWebBrowserDlg(CWnd* pParent /*=nullptr*/)
28 | : CDialogEx(IDD_WebBrowserDlg, pParent)
29 | {
30 | }
31 |
32 | CWebBrowserDlg::~CWebBrowserDlg()
33 | {
34 | }
35 |
36 | void CWebBrowserDlg::DoDataExchange(CDataExchange* pDX)
37 | {
38 | CDialogEx::DoDataExchange(pDX);
39 | }
40 |
41 | BEGIN_MESSAGE_MAP(CWebBrowserDlg, CDialogEx)
42 | ON_WM_DESTROY()
43 | ON_WM_SIZE()
44 | END_MESSAGE_MAP()
45 |
46 | // CWebBrowserDlg message handlers
47 |
48 | BOOL CWebBrowserDlg::OnInitDialog()
49 | {
50 | CDialogEx::OnInitDialog();
51 |
52 | CRect rectClient;
53 | GetClientRect(rectClient);
54 |
55 | m_pCustomControl.CreateAsync(
56 | WS_VISIBLE | WS_CHILD,
57 | rectClient,
58 | this,
59 | 1,
60 | [this]() {
61 | m_pCustomControl.SetParentView((CView*)this);
62 | m_pCustomControl.DisablePopups();
63 | m_pCustomControl.Navigate(USER_MANUAL_URL, nullptr);
64 |
65 | m_pCustomControl.RegisterCallback(CWebBrowser::CallbackType::TitleChanged, [this]() {
66 | CString strTitle = m_pCustomControl.GetTitle();
67 | SetWindowText(strTitle);
68 | });
69 | });
70 |
71 | return TRUE; // return TRUE unless you set the focus to a control
72 | // EXCEPTION: OCX Property Pages should return FALSE
73 | }
74 |
75 | void CWebBrowserDlg::OnDestroy()
76 | {
77 | VERIFY(m_pCustomControl.DestroyWindow());
78 |
79 | CDialogEx::OnDestroy();
80 | }
81 |
82 | void CWebBrowserDlg::OnSize(UINT nType, int cx, int cy)
83 | {
84 | CDialogEx::OnSize(nType, cx, cy);
85 |
86 | if (m_pCustomControl.GetSafeHwnd() != nullptr)
87 | {
88 | m_pCustomControl.MoveWindow(0, 0, cx, cy);
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/MainFrame.h:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | // MainFrame.h : interface of the CMainFrame class
17 | //
18 |
19 | #pragma once
20 |
21 | #include "ChildView.h"
22 | #include "ProcessView.h"
23 |
24 | class CMainFrame : public CFrameWndEx
25 | {
26 |
27 | public:
28 | CMainFrame();
29 | protected:
30 | DECLARE_DYNAMIC(CMainFrame)
31 |
32 | // Attributes
33 | public:
34 |
35 | // Operations
36 | public:
37 |
38 | // Overrides
39 | public:
40 | virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
41 | virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
42 |
43 | // Implementation
44 | public:
45 | virtual ~CMainFrame();
46 | #ifdef _DEBUG
47 | virtual void AssertValid() const;
48 | virtual void Dump(CDumpContext& dc) const;
49 | #endif
50 |
51 | protected: // control bar embedded members
52 | CMFCRibbonBar m_wndRibbonBar;
53 | CMFCRibbonApplicationButton* m_MainButton;
54 | CMFCToolBarImages m_PanelImages;
55 | CMFCRibbonStatusBar m_wndStatusBar;
56 | CMFCCaptionBar m_wndCaptionBar;
57 | // CChildView m_wndView;
58 | CProcessView* m_pProcessView;
59 |
60 | // Generated message map functions
61 | protected:
62 | afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
63 | virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
64 | afx_msg void OnSetFocus(CWnd *pOldWnd);
65 | afx_msg void OnViewCaptionBar();
66 | afx_msg void OnUpdateViewCaptionBar(CCmdUI* pCmdUI);
67 | afx_msg void OnOptions();
68 | bool CreateCaptionBar();
69 | afx_msg void OnProperties();
70 | afx_msg void OnUpdateProperties(CCmdUI *pCmdUI);
71 | afx_msg void OnKillProcess();
72 | afx_msg void OnUpdateKillProcess(CCmdUI *pCmdUI);
73 | afx_msg void OnDevices();
74 | afx_msg void OnPrograms();
75 | afx_msg void OnTwitter();
76 | afx_msg void OnLinkedin();
77 | afx_msg void OnFacebook();
78 | afx_msg void OnInstagram();
79 | afx_msg void OnIssues();
80 | afx_msg void OnDiscussions();
81 | afx_msg void OnWiki();
82 | afx_msg void OnUserManual();
83 | afx_msg void OnCheckForUpdates();
84 |
85 | DECLARE_MESSAGE_MAP()
86 | };
87 |
--------------------------------------------------------------------------------
/IntelliTask.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.11.35312.102
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IntelliTask", "IntelliTask.vcxproj", "{410453CB-78EF-4DA1-844C-5AF252950AAF}"
7 | ProjectSection(ProjectDependencies) = postProject
8 | {B404DF9B-63E6-4D23-8116-A0C28B9DA2A7} = {B404DF9B-63E6-4D23-8116-A0C28B9DA2A7}
9 | EndProjectSection
10 | EndProject
11 | Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Setup", "Setup\Setup.vdproj", "{57BE5266-2E35-40D1-9FCA-C46478E3369D}"
12 | EndProject
13 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genUp4win", "genUp4win\genUp4win.vcxproj", "{B404DF9B-63E6-4D23-8116-A0C28B9DA2A7}"
14 | EndProject
15 | Global
16 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
17 | Debug|Win32 = Debug|Win32
18 | Debug|x64 = Debug|x64
19 | Release|Win32 = Release|Win32
20 | Release|x64 = Release|x64
21 | EndGlobalSection
22 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
23 | {410453CB-78EF-4DA1-844C-5AF252950AAF}.Debug|Win32.ActiveCfg = Debug|Win32
24 | {410453CB-78EF-4DA1-844C-5AF252950AAF}.Debug|Win32.Build.0 = Debug|Win32
25 | {410453CB-78EF-4DA1-844C-5AF252950AAF}.Debug|x64.ActiveCfg = Debug|x64
26 | {410453CB-78EF-4DA1-844C-5AF252950AAF}.Debug|x64.Build.0 = Debug|x64
27 | {410453CB-78EF-4DA1-844C-5AF252950AAF}.Release|Win32.ActiveCfg = Release|Win32
28 | {410453CB-78EF-4DA1-844C-5AF252950AAF}.Release|Win32.Build.0 = Release|Win32
29 | {410453CB-78EF-4DA1-844C-5AF252950AAF}.Release|x64.ActiveCfg = Release|x64
30 | {410453CB-78EF-4DA1-844C-5AF252950AAF}.Release|x64.Build.0 = Release|x64
31 | {57BE5266-2E35-40D1-9FCA-C46478E3369D}.Debug|Win32.ActiveCfg = Debug
32 | {57BE5266-2E35-40D1-9FCA-C46478E3369D}.Debug|x64.ActiveCfg = Debug
33 | {57BE5266-2E35-40D1-9FCA-C46478E3369D}.Debug|x64.Build.0 = Debug
34 | {57BE5266-2E35-40D1-9FCA-C46478E3369D}.Release|Win32.ActiveCfg = Release
35 | {57BE5266-2E35-40D1-9FCA-C46478E3369D}.Release|x64.ActiveCfg = Release
36 | {57BE5266-2E35-40D1-9FCA-C46478E3369D}.Release|x64.Build.0 = Release
37 | {B404DF9B-63E6-4D23-8116-A0C28B9DA2A7}.Debug|Win32.ActiveCfg = Debug|Win32
38 | {B404DF9B-63E6-4D23-8116-A0C28B9DA2A7}.Debug|Win32.Build.0 = Debug|Win32
39 | {B404DF9B-63E6-4D23-8116-A0C28B9DA2A7}.Debug|x64.ActiveCfg = Debug|x64
40 | {B404DF9B-63E6-4D23-8116-A0C28B9DA2A7}.Debug|x64.Build.0 = Debug|x64
41 | {B404DF9B-63E6-4D23-8116-A0C28B9DA2A7}.Release|Win32.ActiveCfg = Release|Win32
42 | {B404DF9B-63E6-4D23-8116-A0C28B9DA2A7}.Release|Win32.Build.0 = Release|Win32
43 | {B404DF9B-63E6-4D23-8116-A0C28B9DA2A7}.Release|x64.ActiveCfg = Release|x64
44 | {B404DF9B-63E6-4D23-8116-A0C28B9DA2A7}.Release|x64.Build.0 = Release|x64
45 | EndGlobalSection
46 | GlobalSection(SolutionProperties) = preSolution
47 | HideSolutionNode = FALSE
48 | EndGlobalSection
49 | EndGlobal
50 |
--------------------------------------------------------------------------------
/MFCListView.cpp:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | // MFCListView.cpp : implementation file
17 | //
18 |
19 | #include "stdafx.h"
20 | #include "IntelliTask.h"
21 | #include "MFCListView.h"
22 |
23 | // CMFCListView
24 |
25 | IMPLEMENT_DYNCREATE(CMFCListView, CFormView)
26 |
27 | CMFCListView::CMFCListView()
28 | : CFormView(CMFCListView::IDD)
29 | {
30 | }
31 |
32 | CMFCListView::~CMFCListView()
33 | {
34 | }
35 |
36 | void CMFCListView::DoDataExchange(CDataExchange* pDX)
37 | {
38 | CFormView::DoDataExchange(pDX);
39 | }
40 |
41 | BEGIN_MESSAGE_MAP(CMFCListView, CFormView)
42 | ON_WM_CREATE()
43 | ON_WM_DESTROY()
44 | ON_WM_SIZE()
45 | ON_WM_ERASEBKGND()
46 | END_MESSAGE_MAP()
47 |
48 | // CMFCListView diagnostics
49 |
50 | #ifdef _DEBUG
51 | void CMFCListView::AssertValid() const
52 | {
53 | CFormView::AssertValid();
54 | }
55 |
56 | #ifndef _WIN32_WCE
57 | void CMFCListView::Dump(CDumpContext& dc) const
58 | {
59 | CFormView::Dump(dc);
60 | }
61 | #endif
62 | #endif //_DEBUG
63 |
64 | // CMFCListView message handlers
65 |
66 | int CMFCListView::OnCreate(LPCREATESTRUCT lpCreateStruct)
67 | {
68 | if (CFormView::OnCreate(lpCreateStruct) == -1)
69 | return -1;
70 |
71 | if (!m_mfcListCtrl.Create(WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SINGLESEL, CRect(0, 0, 0, 0), this, ID_MFCLISTCTRL))
72 | return -1;
73 |
74 | return 0;
75 | }
76 |
77 | void CMFCListView::OnDestroy()
78 | {
79 | VERIFY(m_mfcListCtrl.DestroyWindow());
80 |
81 | CFormView::OnDestroy();
82 | }
83 |
84 | void CMFCListView::OnSize(UINT nType, int cx, int cy)
85 | {
86 | CFormView::OnSize(nType, cx, cy);
87 |
88 | if (m_mfcListCtrl.GetSafeHwnd() != nullptr)
89 | m_mfcListCtrl.MoveWindow(0, 0, cx, cy);
90 | }
91 |
92 | BOOL CMFCListView::OnEraseBkgnd(CDC* pDC)
93 | {
94 | UNREFERENCED_PARAMETER(pDC);
95 | // return CFormView::OnEraseBkgnd(pDC);
96 |
97 | return TRUE;
98 | }
99 |
100 | void CMFCListView::OnInitialUpdate()
101 | {
102 | CFormView::OnInitialUpdate();
103 |
104 | SetScrollSizes(MM_TEXT, CSize(0, 0));
105 | }
106 |
107 | BOOL CMFCListView::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
108 | {
109 | if (m_mfcListCtrl.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
110 | return TRUE;
111 |
112 | return CFormView::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
113 | }
114 |
--------------------------------------------------------------------------------
/sinstance.h:
--------------------------------------------------------------------------------
1 | /*
2 | Module : sinstance.h
3 | Purpose: Defines the interface for a C++ wrapper class to do instance checking
4 | Created: PJN / 29-07-1998
5 |
6 | Copyright (c) 1996 - 2022 by PJ Naughter (Web: www.naughter.com, Email: pjna@naughter.com)
7 |
8 | All rights reserved.
9 |
10 | Copyright / Usage Details:
11 |
12 | You are allowed to include the source code in any product (commercial, shareware, freeware or otherwise)
13 | when your product is released in binary form. You are allowed to modify the source code in any way you want
14 | except you cannot modify the copyright details at the top of each module. If you want to distribute source
15 | code with your application, then you are only allowed to distribute versions released by the author. This is
16 | to maintain a single distribution point for the source code.
17 |
18 | */
19 |
20 |
21 | /////////////////////////// Macros / Defines //////////////////////////////////
22 |
23 | #pragma once
24 |
25 | #ifndef __SINSTANCE_H__
26 | #define __SINSTANCE_H__
27 |
28 | #ifndef CSINGLEINSTANCE_EXT_CLASS
29 | #define CSINGLEINSTANCE_EXT_CLASS
30 | #endif //#ifndef CSINGLEINSTANCE_EXT_CLASS
31 |
32 | #ifndef CSINGLEINSTANCE_EXT_API
33 | #define CSINGLEINSTANCE_EXT_API
34 | #endif //#ifndef CSINGLEINSTANCE_EXT_API
35 |
36 |
37 | /////////////////////////// Includes //////////////////////////////////////////
38 |
39 | #ifndef __ATLSYNC_H__
40 | #pragma message("To avoid this message, please put atlsync.h in your pre compiled header (normally stdafx.h)")
41 | #include
42 | #endif //#ifndef __ATLSYNC_H__
43 |
44 | #ifndef __ATLSTR_H__
45 | #pragma message("To avoid this message, please put atlstr.h in your pre compiled header (normally stdafx.h)")
46 | #include
47 | #endif //#ifndef __ATLSTR_H__
48 |
49 |
50 | /////////////////////////// Classes //////////////////////////////////////////
51 |
52 | class CSINGLEINSTANCE_EXT_CLASS CInstanceChecker
53 | {
54 | public:
55 | //Constructors / Destructors
56 | CInstanceChecker(_In_z_ LPCTSTR pszUniqueName);
57 | CInstanceChecker(_In_ const CInstanceChecker&) = delete;
58 | CInstanceChecker(_In_ CInstanceChecker&&) = delete;
59 | virtual ~CInstanceChecker() = default;
60 |
61 | //General functions
62 | CInstanceChecker& operator=(_In_ const CInstanceChecker&) = delete;
63 | CInstanceChecker& operator=(_In_ CInstanceChecker&&) = delete;
64 | _Return_type_success_(return != false) virtual bool TrackFirstInstanceRunning(_In_ HWND hWindowToTrack);
65 | _Return_type_success_(return != false) virtual bool PreviousInstanceRunning();
66 | _Return_type_success_(return != false) virtual bool ActivatePreviousInstance(_In_opt_ LPCTSTR lpCmdLine = nullptr, _In_ ULONG_PTR dwCopyDataItemData = 0, _In_ DWORD dwTimeout = 30000, HWND hSender = nullptr);
67 | _Return_type_success_(return != false) virtual bool QuitPreviousInstance(_In_ int nExitCode = 0);
68 | _Return_type_success_(return != false) virtual bool FindPreviousHWND(_Out_ HWND& hPrevWnd);
69 |
70 | protected:
71 | //Virtual methods
72 | virtual ATL::CAtlString GetExecuteMutexName();
73 | _Return_type_success_(return != false) virtual bool CreateExecuteMutexIfNecessary();
74 |
75 | //Member variables
76 | ATL::CAtlString m_sName;
77 | ATL::CHandle m_MMF;
78 | ATL::CMutex m_ExecuteMutex;
79 | };
80 |
81 | #endif //#ifndef __SINSTANCE_H__
82 |
--------------------------------------------------------------------------------
/old/SysSetup.c:
--------------------------------------------------------------------------------
1 | //
2 | // (w)ritten by Chuan-Liang Teng 2006, mailto:clteng@ms6.hinet.net
3 | //
4 | #include "syssetup.h"
5 | //
6 | extern HWND _hDlg;
7 | //
8 | char StartDriver(const short wError, const short wStart,
9 | const char* lpszDriverPath, const char* lpszServiceName)
10 | {
11 | SC_HANDLE hSCManager = 0L;
12 | SC_HANDLE hService = 0L;
13 | //
14 | hSCManager = OpenSCManager(0L,
15 | 0L,
16 | SC_MANAGER_ALL_ACCESS);
17 |
18 | if (hSCManager)
19 | {
20 | hService = CreateService(hSCManager,
21 | lpszServiceName,
22 | lpszServiceName,
23 | SERVICE_ALL_ACCESS,
24 | SERVICE_KERNEL_DRIVER,
25 | wStart,
26 | wError,
27 | lpszDriverPath,
28 | 0L,
29 | 0L,
30 | 0L,
31 | 0L,
32 | 0L);
33 |
34 | if (!hService)
35 | {
36 | DWORD dwErrorCode = GetLastError();
37 | if (dwErrorCode == ERROR_SERVICE_EXISTS)
38 | {
39 | hService = OpenService(hSCManager, lpszServiceName, SERVICE_ALL_ACCESS);
40 | }
41 | else
42 | {
43 | ShowErrorMsg(_hDlg, dwErrorCode, "CreateService");
44 | return 0;
45 | };
46 | };
47 | //
48 | if (hService)
49 | {
50 | if (!StartService(hService, 0, 0L))
51 | {
52 | CloseServiceHandle(hService);
53 | ShowErrorMsg(_hDlg, GetLastError(), "StartService");
54 | return 0;
55 | };
56 | };
57 | //
58 | CloseServiceHandle(hSCManager);
59 | };
60 | //
61 | return 1;
62 | };
63 | //
64 | char StopDriver(const char* lpszServiceName)
65 | {
66 | SC_HANDLE hSCManager = 0L;
67 | SC_HANDLE hService = 0L;
68 | char bResult = 0;
69 | SERVICE_STATUS ServiceStatus;
70 |
71 | hSCManager = OpenSCManager(0L,
72 | 0L,
73 | SC_MANAGER_ALL_ACCESS);
74 | //
75 | if (hSCManager)
76 | {
77 | hService = OpenService(hSCManager,
78 | lpszServiceName,
79 | SERVICE_ALL_ACCESS);
80 | if (hService)
81 | {
82 | bResult = (char)ControlService(hService, SERVICE_CONTROL_STOP, &ServiceStatus);
83 | bResult = bResult && DeleteService(hService);
84 | CloseServiceHandle(hService);
85 | };
86 | //
87 | CloseServiceHandle(hSCManager);
88 | };
89 | //
90 | return bResult;
91 | };
92 | //
93 | void* OpenDevice(const char* lpszDevicePath)
94 | {
95 | HANDLE hDevice = (HANDLE)-1;
96 | //
97 | hDevice = CreateFile(lpszDevicePath,
98 | GENERIC_READ | GENERIC_WRITE,
99 | FILE_SHARE_READ | FILE_SHARE_WRITE,
100 | 0L,
101 | OPEN_EXISTING,
102 | 0,
103 | 0L);
104 | //
105 | return hDevice;
106 | };
107 |
--------------------------------------------------------------------------------
/ProcessList.h:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | #pragma once
17 |
18 | #include "CpuUsage.h"
19 |
20 | ///////////////////////////////////////////////////////////////////////////////
21 | // CProcessData command target
22 | ///////////////////////////////////////////////////////////////////////////////
23 |
24 | class CProcessData : public CObject
25 | {
26 | protected:
27 | DECLARE_DYNAMIC(CProcessData)
28 |
29 | public:
30 | CProcessData();
31 | CProcessData(DWORD dwProcessID, DWORD dwParentProcessID, DWORD dwPriority, DOUBLE cpuUsage, DWORD memUsage,
32 | CString strFileName, CString strFilePath, CString strDescription, CString strCompany, CString strVersion);
33 | virtual ~CProcessData();
34 |
35 | public:
36 | DWORD GetProcessID() { return m_dwProcessID; }
37 | void SetProcessID(DWORD dwProcessID) { m_dwProcessID = dwProcessID; }
38 | DWORD GetParentProcessID() { return m_dwParentProcessID; }
39 | void SetParentProcessID(DWORD dwParentProcessID) { m_dwParentProcessID = dwParentProcessID; }
40 | DWORD GetPriority() { return m_dwPriority; }
41 | void SetPriority(DWORD dwPriority) { m_dwPriority = dwPriority; }
42 | DOUBLE GetProcessorUsage() { return m_cpuUsage; }
43 | void SetProcessorUsage(DOUBLE cpuUsage) { m_cpuUsage = cpuUsage; }
44 | DWORD GetMemoryUsage() { return m_memUsage; }
45 | void SetMemoryUsage(DWORD memUsage) { m_memUsage = memUsage; }
46 | CString GetFileName() { return m_strFileName; }
47 | void SetFileName(CString strFileName) { m_strFileName = strFileName; }
48 | CString GetFilePath() { return m_strFilePath; }
49 | void SetFilePath(CString strFilePath) { m_strFilePath = strFilePath; }
50 | CString GetDescription() { return m_strDescription; }
51 | void SetDescription(CString strDescription) { m_strDescription = strDescription; }
52 | CString GetCompany() { return m_strCompany; }
53 | void SetCompany(CString strCompany) { m_strCompany = strCompany; }
54 | CString GetVersion() { return m_strVersion; }
55 | void SetVersion(CString strVersion) { m_strVersion = strVersion; }
56 |
57 | public:
58 | CpuUsage m_pCpuUsage;
59 | protected:
60 | DWORD m_dwProcessID;
61 | DWORD m_dwParentProcessID;
62 | DWORD m_dwPriority;
63 | DOUBLE m_cpuUsage;
64 | DWORD m_memUsage;
65 | CString m_strFileName;
66 | CString m_strFilePath;
67 | CString m_strDescription;
68 | CString m_strCompany;
69 | CString m_strVersion;
70 | };
71 |
72 | typedef CArray CProcessList;
73 |
74 | ///////////////////////////////////////////////////////////////////////////////
75 | // CSystemSnapshot command target
76 | ///////////////////////////////////////////////////////////////////////////////
77 |
78 | class CSystemSnapshot : public CObject
79 | {
80 | protected:
81 | DECLARE_DYNAMIC(CSystemSnapshot)
82 |
83 | public:
84 | CSystemSnapshot();
85 | virtual ~CSystemSnapshot();
86 |
87 | public:
88 | bool RemoveAll();
89 | int GetSize() { return (int)m_arrProcessList.GetSize(); }
90 | CProcessData* GetAt(int nIndex) { return m_arrProcessList.GetAt(nIndex); }
91 |
92 | bool Refresh();
93 | CProcessData* InsertProcess(PROCESSENTRY32& pe32);
94 | CProcessData* UpdateProcess(DWORD dwProcessID);
95 | bool RemoveProcess(DWORD dwProcessID);
96 | CProcessData* GetProcessID(DWORD dwProcessID);
97 |
98 | protected:
99 | CProcessList m_arrProcessList;
100 | };
101 |
--------------------------------------------------------------------------------
/stdafx.h:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | // This MFC Samples source code demonstrates using MFC Microsoft Office Fluent User Interface
17 | // (the "Fluent UI") and is provided only as referential material to supplement the
18 | // Microsoft Foundation Classes Reference and related electronic documentation
19 | // included with the MFC C++ library software.
20 | // License terms to copy, use or distribute the Fluent UI are available separately.
21 | // To learn more about our Fluent UI licensing program, please visit
22 | // http://msdn.microsoft.com/officeui.
23 | //
24 | // Copyright (C) Microsoft Corporation
25 | // All rights reserved.
26 |
27 | // stdafx.h : include file for standard system include files,
28 | // or project specific include files that are used frequently,
29 | // but are changed infrequently
30 |
31 | #pragma once
32 |
33 | #ifndef _SECURE_ATL
34 | #define _SECURE_ATL 1
35 | #endif
36 |
37 | #ifndef VC_EXTRALEAN
38 | #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
39 | #endif
40 |
41 | #include "targetver.h"
42 |
43 | #define _CRT_SECURE_NO_WARNINGS
44 | #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit
45 |
46 | // turns off MFC's hiding of some common and often safely ignored warning messages
47 | #define _AFX_ALL_WARNINGS
48 |
49 | #include // MFC core and standard components
50 | #include // MFC extensions
51 | #include // MFC Automation classes
52 |
53 | // Here, minimal DB support is requested. No view is chosen.
54 |
55 | #ifndef _AFX_NO_OLE_SUPPORT
56 | #include // MFC support for Internet Explorer 4 Common Controls
57 | #endif
58 | #ifndef _AFX_NO_AFXCMN_SUPPORT
59 | #include // MFC support for Windows Common Controls
60 | #endif // _AFX_NO_AFXCMN_SUPPORT
61 |
62 | #include // MFC support for ribbons and control bars
63 | #include // MFC socket extensions
64 |
65 | #include // ODBC
66 | #include
67 |
68 | #ifdef _UNICODE
69 | #if defined _M_IX86
70 | #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
71 | #elif defined _M_X64
72 | #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
73 | #else
74 | #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
75 | #endif
76 | #endif
77 |
78 | #include
79 | #include
80 | #pragma comment(lib, "psapi.lib")
81 |
82 | #define ID_MFCLISTCTRL (WM_USER+0x1234)
83 |
84 | #define PID_COLUMN_LENGTH 70
85 | #define PROCESS_COLUMN_LENGTH 120
86 | #define CPU_USAGE_COLUMN_LENGTH 70
87 | #define MEM_USAGE_COLUMN_LENGTH 70
88 | #define DESCRIPTION_COLUMN_SIZE 120
89 | #define COMPANY_COLUMN_LENGTH 120
90 | #define VERSION_COLUMN_LENGTH 120
91 |
92 | #include
93 | #include
94 | #include
95 | #include
96 | #include
97 |
98 | #define INSTALLER_URL _T("https://www.moga.doctor/freeware/IntelliTaskSetup.msi")
99 | #define APPLICATION_URL _T("https://www.moga.doctor/freeware/IntelliTask.xml")
100 | #define USER_MANUAL_URL _T("https://www.moga.doctor/intellitask/")
101 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | Download:
4 | - [IntelliTaskSetup.msi](https://www.moga.doctor/freeware/IntelliTaskSetup.msi)
5 | - [IntelliTask.zip](https://www.moga.doctor/freeware/IntelliTask.zip)
6 |
7 | ## Introduction
8 |
9 | _IntelliTask_ is a free (as in “free speech” and also as in “free beer”) process/service manager. Running in the Microsoft Windows environment, its use is governed by [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.html). _IntelliTask_ is written in C++ and uses pure Win32 API and STL which ensures a higher execution speed and smaller program size. By optimizing as many routines as possible without losing user friendliness, _IntelliTask_ is trying to reduce the world carbon dioxide emissions. When using less CPU power, the PC can throttle down and reduce power consumption, resulting in a greener environment. I hope you enjoy _IntelliTask_ as much as I enjoy coding it!
10 |
11 | _IntelliTask_ provides information about processes and services running on your computer. It also displays the most commonly used performance measures for processes. You can use _IntelliTask_ to monitor key indicators of your computer’s performance. You can see the status of the programs that are running and end programs that have stopped responding. You can also assess the activity of running processes using as many as fifteen parameters, and see graphs and data on CPU and memory usage. In addition, if you are connected to a network, you can view network status and see how your network is functioning.
12 |
13 | ## Getting started
14 |
15 | ### Install IntelliTask using the installer
16 |
17 | - Download the installer
18 | - Run the executable binary and follow the installation flow
19 |
20 | The installer will likely require Administrative privileges in order to install _IntelliTask_ (and later, to update _IntelliTask_ or install or update plugins, or anything else that requires writing to the installation directory). If you do not have Administrative privileges, you either need to tell the installer to use a location where you do have write permission (though that may still ask for Administrator privileges), or you may choose not use the installer and instead run a portable edition from a directory where you have write permission.
21 |
22 | ### Install IntelliTask from zip
23 |
24 | These instructions will allow you to run a portable or mini-portable (also called “minimalist”), without requiring administrative privileges.
25 |
26 | - Create a new folder somewhere that you have write-permission
27 | - Unzip the content into the new folder
28 | - Run _IntelliTask_ from the new folder
29 |
30 | The portable zip edition of _IntelliTask_ can be removed by deleting the directory they came in. If you manually set up file associations or context-menu entries in the OS, it is your responsibility to remove them yourself.
31 |
32 | ## Application's menu
33 |
34 | The _IntelliTask_ menu features the application's most important functions:
35 |
36 | - **Properties**: Shows file properties.
37 | - **Kill process**: Kills selectedd process.
38 | - **Device Manager**: Shows local computer devices.
39 | - **Installed Programs**: Shows computer installed programs.
40 |
41 | ## Create and Submit your Pull Request
42 |
43 | As noted in the [Contributing Rules](https://github.com/mihaimoga/IntelliTask/blob/main/CONTRIBUTING.md) for _IntelliTask_, all Pull Requests need to be attached to a issue on GitHub. So the first step is to create an issue which requests that the functionality be improved (if it was already there) or added (if it was not yet there); in your issue, be sure to explain that you have the functionality definition ready, and will be submitting a Pull Request. The second step is to use the GitHub interface to create the Pull Request from your fork into the main repository. The final step is to wait for and respond to feedback from the developers as needed, until such time as your PR is accepted or rejected.
44 |
45 | ## Acknowledges
46 |
47 | This open source project uses the following libraries:
48 |
49 | - [genUp4win](https://github.com/mihaimoga/genUp4win)
50 | - PJ Naughter's [CHLinkCtrl](https://www.naughter.com/hlinkctrl.html)
51 | - PJ Naughter's [CInstanceChecker](https://www.naughter.com/sinstance.html)
52 | - PJ Naughter's [CVersionInfo](https://www.naughter.com/versioninfo.html)
53 | - PJ Naughter's [DtWinVer](https://www.naughter.com/dtwinver.html)
54 | - Mizan Rahman's [CWndResizer](https://www.codeproject.com/articles/MFC-C-Helper-Class-for-Window-Resizing)
55 |
--------------------------------------------------------------------------------
/CheckForUpdatesDlg.cpp:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | // CheckForUpdatesDlg.cpp : implementation file
17 | //
18 |
19 | #include "stdafx.h"
20 | #include "IntelliTask.h"
21 | #include "CheckForUpdatesDlg.h"
22 |
23 | #include "genUp4win/genUp4win.h"
24 | #if _WIN64
25 | #ifdef _DEBUG
26 | #pragma comment(lib, "x64/Debug/genUp4win.lib")
27 | #else
28 | #pragma comment(lib, "x64/Release/genUp4win.lib")
29 | #endif
30 | #else
31 | #ifdef _DEBUG
32 | #pragma comment(lib, "Debug/genUp4win.lib")
33 | #else
34 | #pragma comment(lib, "Release/genUp4win.lib")
35 | #endif
36 | #endif
37 |
38 | // CCheckForUpdatesDlg dialog
39 |
40 | IMPLEMENT_DYNAMIC(CCheckForUpdatesDlg, CDialogEx)
41 |
42 | CCheckForUpdatesDlg::CCheckForUpdatesDlg(CWnd* pParent /*=nullptr*/)
43 | : CDialogEx(IDD_CheckForUpdatesDlg, pParent)
44 | {
45 | m_nUpdateThreadID = 0;
46 | m_hUpdateThread = nullptr;
47 | m_nTimerID = 0;
48 | }
49 |
50 | CCheckForUpdatesDlg::~CCheckForUpdatesDlg()
51 | {
52 | }
53 |
54 | void CCheckForUpdatesDlg::DoDataExchange(CDataExchange* pDX)
55 | {
56 | CDialogEx::DoDataExchange(pDX);
57 | DDX_Control(pDX, IDC_STATUS, m_ctrlStatusMessage);
58 | DDX_Control(pDX, IDC_PROGRESS, m_ctrlProgress);
59 | }
60 |
61 | BEGIN_MESSAGE_MAP(CCheckForUpdatesDlg, CDialogEx)
62 | ON_WM_TIMER()
63 | END_MESSAGE_MAP()
64 |
65 | // CCheckForUpdatesDlg message handlers
66 | CCheckForUpdatesDlg* g_dlgCheckForUpdates = nullptr;
67 | void UI_Callback(int, const std::wstring& strMessage)
68 | {
69 | if (g_dlgCheckForUpdates != nullptr)
70 | {
71 | g_dlgCheckForUpdates->m_ctrlStatusMessage.SetWindowText(strMessage.c_str());
72 | g_dlgCheckForUpdates->m_ctrlStatusMessage.UpdateWindow();
73 | }
74 | }
75 |
76 | bool g_bThreadRunning = false;
77 | bool g_bNewUpdateFound = false;
78 | DWORD WINAPI UpdateThreadProc(LPVOID lpParam)
79 | {
80 | UNREFERENCED_PARAMETER(lpParam);
81 |
82 | g_bThreadRunning = true;
83 | if (g_dlgCheckForUpdates != nullptr)
84 | {
85 | g_dlgCheckForUpdates->m_ctrlProgress.SetMarquee(TRUE, 30);
86 | }
87 | const DWORD nLength = 0x1000 /* _MAX_PATH */;
88 | TCHAR lpszFilePath[nLength] = { 0, };
89 | GetModuleFileName(nullptr, lpszFilePath, nLength);
90 | g_bNewUpdateFound = CheckForUpdates(lpszFilePath, APPLICATION_URL, UI_Callback);
91 | if (g_dlgCheckForUpdates != nullptr)
92 | {
93 | g_dlgCheckForUpdates->m_ctrlProgress.SetMarquee(FALSE, 30);
94 | }
95 | g_bThreadRunning = false;
96 |
97 | ::ExitThread(0);
98 | // return 0;
99 | }
100 |
101 | BOOL CCheckForUpdatesDlg::OnInitDialog()
102 | {
103 | CDialogEx::OnInitDialog();
104 |
105 | #ifdef _DEBUG
106 | const DWORD nLength = 0x1000 /* _MAX_PATH */;
107 | TCHAR lpszFilePath[nLength] = { 0, };
108 | GetModuleFileName(nullptr, lpszFilePath, nLength);
109 | WriteConfigFile(lpszFilePath, INSTALLER_URL);
110 | #endif
111 |
112 | g_dlgCheckForUpdates = this;
113 | m_hUpdateThread = ::CreateThread(nullptr, 0, (LPTHREAD_START_ROUTINE)UpdateThreadProc, this, 0, &m_nUpdateThreadID);
114 | m_nTimerID = SetTimer(0x1234, 100, nullptr);
115 |
116 | return TRUE; // return TRUE unless you set the focus to a control
117 | // EXCEPTION: OCX Property Pages should return FALSE
118 | }
119 |
120 | void CCheckForUpdatesDlg::OnCancel()
121 | {
122 | while (g_bThreadRunning)
123 | Sleep(1000);
124 | CDialogEx::OnCancel();
125 | }
126 |
127 | void CCheckForUpdatesDlg::OnTimer(UINT_PTR nIDEvent)
128 | {
129 | CDialogEx::OnTimer(nIDEvent);
130 |
131 | if (m_nTimerID == nIDEvent)
132 | {
133 | if (!g_bThreadRunning)
134 | {
135 | VERIFY(KillTimer(m_nTimerID));
136 | CDialogEx::OnCancel();
137 | if (g_bNewUpdateFound)
138 | {
139 | PostQuitMessage(0);
140 | }
141 | }
142 | }
143 | }
144 |
--------------------------------------------------------------------------------
/VersionInfo.h:
--------------------------------------------------------------------------------
1 | /*
2 | Module : VersionInfo.h
3 | Purpose: Interface for an C++ class encapsulation of Window's "Version Infos"
4 |
5 | Copyright (c) 2000 - 2022 by PJ Naughter (Web: www.naughter.com, Email: pjna@naughter.com)
6 |
7 | All rights reserved.
8 |
9 | Copyright / Usage Details:
10 |
11 | You are allowed to include the source code in any product (commercial, shareware, freeware or otherwise)
12 | when your product is released in binary form. You are allowed to modify the source code in any way you want
13 | except you cannot modify the copyright details at the top of each module. If you want to distribute source
14 | code with your application, then you are only allowed to distribute versions released by the author. This is
15 | to maintain a single distribution point for the source code.
16 |
17 | */
18 |
19 |
20 | /////////////////////////////// Macros / Defines //////////////////////////////
21 |
22 | #pragma once
23 |
24 | #ifndef __VERSIONINFO_H__
25 | #define __VERSIONINFO_H__
26 |
27 | #ifndef CVERSIONINFO_EXT_CLASS
28 | #define CVERSIONINFO_EXT_CLASS
29 | #endif //#ifndef CVERSIONINFO_EXT_CLASS
30 |
31 | #ifndef CVERSIONINFO_EXT_API
32 | #define CVERSIONINFO_EXT_API
33 | #endif //#ifndef CVERSIONINFO_EXT_API
34 |
35 | #ifndef _STRING_
36 | #pragma message("To avoid this message, please put string in your pre compiled header (normally stdafx.h)")
37 | #include
38 | #endif //#ifndef _STRING_
39 |
40 | #ifndef _VECTOR_
41 | #pragma message("To avoid this message, please put vector in your pre compiled header (normally stdafx.h)")
42 | #include
43 | #endif //#ifndef _VECTOR_
44 |
45 |
46 | /////////////////////////////// Classes ///////////////////////////////////////
47 |
48 | class CVERSIONINFO_EXT_CLASS CVersionInfo
49 | {
50 | public:
51 | //Typedefs
52 | #ifdef _UNICODE
53 | using String = std::wstring;
54 | #else
55 | using String = std::string;
56 | #endif //#ifdef _UNICODE
57 |
58 | //Structs
59 | struct TRANSLATION
60 | {
61 | WORD m_wLangID; //e.g. 0x0409 LANG_ENGLISH, SUBLANG_ENGLISH_USA
62 | WORD m_wCodePage; //e.g. 1252 Codepage for Windows:Multilingual
63 | };
64 |
65 | //Constructors / Destructors
66 | CVersionInfo() noexcept;
67 | CVersionInfo(_In_ const CVersionInfo&) = delete;
68 | CVersionInfo(_In_ CVersionInfo&&) = delete;
69 | ~CVersionInfo() noexcept;
70 |
71 | //Methods
72 | CVersionInfo& operator=(_In_ const CVersionInfo&) = delete;
73 | CVersionInfo& operator=(_In_ CVersionInfo&&) = delete;
74 | BOOL Load(_In_z_ LPCTSTR szFileName);
75 | _NODISCARD VS_FIXEDFILEINFO* GetFixedFileInfo() const noexcept;
76 | _NODISCARD DWORD GetFileFlagsMask() const noexcept;
77 | _NODISCARD DWORD GetFileFlags() const noexcept;
78 | _NODISCARD DWORD GetOS() const noexcept;
79 | _NODISCARD DWORD GetFileType() const noexcept;
80 | _NODISCARD DWORD GetFileSubType() const noexcept;
81 | _NODISCARD FILETIME GetCreationTime() const noexcept;
82 | _NODISCARD unsigned __int64 GetFileVersion() const noexcept;
83 | _NODISCARD unsigned __int64 GetProductVersion() const noexcept;
84 | _NODISCARD String GetValue(_In_z_ LPCTSTR pszKeyName) const;
85 | _NODISCARD String GetComments() const;
86 | _NODISCARD String GetCompanyName() const;
87 | _NODISCARD String GetFileDescription() const;
88 | _NODISCARD String GetFileVersionAsString() const;
89 | _NODISCARD String GetInternalName() const;
90 | _NODISCARD String GetLegalCopyright() const;
91 | _NODISCARD String GetLegalTrademarks() const;
92 | _NODISCARD String GetOriginalFilename() const;
93 | _NODISCARD String GetPrivateBuild() const;
94 | _NODISCARD String GetProductName() const;
95 | _NODISCARD String GetProductVersionAsString() const;
96 | _NODISCARD String GetSpecialBuild() const;
97 | _NODISCARD int GetNumberOfTranslations() const noexcept;
98 | _NODISCARD TRANSLATION* GetTranslation(_In_ int nIndex) const noexcept;
99 | void SetTranslation(_In_ int nIndex) noexcept;
100 |
101 | protected:
102 | //Methods
103 | void Unload() noexcept;
104 |
105 | //Data
106 | WORD m_wLangID; //The current language ID of the resource
107 | WORD m_wCharset; //The current Character set ID of the resource
108 | std::vector m_VerData; //Pointer to the version info blob
109 | TRANSLATION* m_pTranslations; //Pointer to the "\\VarFileInfo\\Translation" version info
110 | int m_nTranslations; //The number of translated version infos in the resource
111 | VS_FIXEDFILEINFO* m_pffi; //Pointer to the fixed size version info data
112 | };
113 |
114 | #endif //#ifndef __VERSIONINFO_H__
115 |
--------------------------------------------------------------------------------
/CpuUsage.cpp:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | #include "StdAfx.h"
17 | #include
18 | #include "CpuUsage.h"
19 |
20 | CpuUsage::CpuUsage(void)
21 | : m_dwProcessID(0)
22 | , m_nCpuUsage(-1)
23 | , m_dwLastRun(0)
24 | , m_lRunCount(0)
25 | {
26 | ZeroMemory(&m_ftPrevSysKernel, sizeof(FILETIME));
27 | ZeroMemory(&m_ftPrevSysUser, sizeof(FILETIME));
28 | ZeroMemory(&m_ftPrevProcKernel, sizeof(FILETIME));
29 | ZeroMemory(&m_ftPrevProcUser, sizeof(FILETIME));
30 |
31 | SYSTEM_INFO sysInfo;
32 | GetSystemInfo(&sysInfo);
33 | m_nProcessors = sysInfo.dwNumberOfProcessors;
34 | }
35 |
36 | /**********************************************
37 | * CpuUsage::GetUsage
38 | * returns the percent of the CPU that this process
39 | * has used since the last time the method was called.
40 | * If there is not enough information, -1 is returned.
41 | * If the method is recalled to quickly, the previous value
42 | * is returned.
43 | ***********************************************/
44 | DOUBLE CpuUsage::GetUsage()
45 | {
46 | HANDLE hProcess = nullptr;
47 | // create a local copy to protect against race conditions in setting the member variable
48 | DOUBLE nCpuCopy = m_nCpuUsage;
49 | if (::InterlockedIncrement(&m_lRunCount) == 1)
50 | {
51 | // If this is called too often, the measurement itself will greatly affect the results.
52 | if (!EnoughTimePassed())
53 | {
54 | ::InterlockedDecrement(&m_lRunCount);
55 | return nCpuCopy;
56 | }
57 |
58 | FILETIME ftSysIdle, ftSysKernel, ftSysUser;
59 | FILETIME ftProcCreation, ftProcExit, ftProcKernel, ftProcUser;
60 | if ((hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, false, m_dwProcessID)) != nullptr)
61 | {
62 | if (!GetSystemTimes(&ftSysIdle, &ftSysKernel, &ftSysUser) ||
63 | !GetProcessTimes(hProcess, &ftProcCreation,
64 | &ftProcExit, &ftProcKernel, &ftProcUser))
65 | {
66 | ::InterlockedDecrement(&m_lRunCount);
67 | CloseHandle(hProcess);
68 | return nCpuCopy;
69 | }
70 | CloseHandle(hProcess);
71 | hProcess = nullptr;
72 |
73 | /* CPU usage is calculated by getting the total amount of time
74 | the system has operated since the last measurement
75 | (made up of kernel + user) and the total
76 | amount of time the process has run (kernel + user) */
77 | ULONGLONG ftSysIdleDiff = SubtractTimes(ftSysIdle, m_ftPrevSysIdle);
78 | ULONGLONG ftSysKernelDiff = SubtractTimes(ftSysKernel, m_ftPrevSysKernel);
79 | ULONGLONG ftSysUserDiff = SubtractTimes(ftSysUser, m_ftPrevSysUser);
80 |
81 | ULONGLONG ftProcKernelDiff = SubtractTimes(ftProcKernel, m_ftPrevProcKernel);
82 | ULONGLONG ftProcUserDiff = SubtractTimes(ftProcUser, m_ftPrevProcUser);
83 |
84 | ULONGLONG nTotalSys = ftSysKernelDiff + ftSysUserDiff - ftSysIdleDiff;
85 | ULONGLONG nTotalProc = ftProcKernelDiff + ftProcUserDiff;
86 |
87 | if (nTotalSys > 0)
88 | {
89 | m_nCpuUsage = ((100.0 * (DOUBLE)nTotalProc) / (DOUBLE)nTotalSys) / (DOUBLE)m_nProcessors;
90 | }
91 |
92 | m_ftPrevSysIdle = ftSysIdle;
93 | m_ftPrevSysKernel = ftSysKernel;
94 | m_ftPrevSysUser = ftSysUser;
95 | m_ftPrevProcKernel = ftProcKernel;
96 | m_ftPrevProcUser = ftProcUser;
97 |
98 | m_dwLastRun = GetTickCount64();
99 | nCpuCopy = m_nCpuUsage;
100 | }
101 | }
102 |
103 | ::InterlockedDecrement(&m_lRunCount);
104 | return nCpuCopy;
105 | }
106 |
107 | ULONGLONG CpuUsage::SubtractTimes(const FILETIME& ftA, const FILETIME& ftB)
108 | {
109 | LARGE_INTEGER a, b;
110 | a.LowPart = ftA.dwLowDateTime;
111 | a.HighPart = ftA.dwHighDateTime;
112 | b.LowPart = ftB.dwLowDateTime;
113 | b.HighPart = ftB.dwHighDateTime;
114 | return a.QuadPart - b.QuadPart;
115 | }
116 |
117 | bool CpuUsage::EnoughTimePassed()
118 | {
119 | const int minElapsedMS = 250; // milliseconds
120 | ULONGLONG dwCurrentTickCount = GetTickCount64();
121 | return (dwCurrentTickCount - m_dwLastRun) > minElapsedMS;
122 | }
123 |
124 | // http://www.philosophicalgeek.com/2009/01/03/determine-cpu-usage-of-current-process-c-and-c/
125 |
--------------------------------------------------------------------------------
/HLinkCtrl.h:
--------------------------------------------------------------------------------
1 | /*
2 | Module : HLinkCtrl.h
3 | Purpose: Interface for a MFC class for a static text control class with hyperlink support
4 | Created: PJN / 16-06-1997
5 |
6 | Copyright (c) 1997 - 2022 by PJ Naughter (Web: www.naughter.com, Email: pjna@naughter.com)
7 |
8 | All rights reserved.
9 |
10 | Copyright / Usage Details:
11 |
12 | You are allowed to include the source code in any product (commercial, shareware, freeware or otherwise)
13 | when your product is released in binary form. You are allowed to modify the source code in any way you want
14 | except you cannot modify the copyright details at the top of each module. If you want to distribute source
15 | code with your application, then you are only allowed to distribute versions released by the author. This is
16 | to maintain a single distribution point for the source code.
17 |
18 | */
19 |
20 |
21 | /////////////////////////// Defines ///////////////////////////////////////////
22 |
23 | #pragma once
24 |
25 | #ifndef __HLINKCTRL_H__
26 | #define __HLINKCTRL_H__
27 |
28 | #ifndef HLINKCTRL_EXT_CLASS
29 | #define HLINKCTRL_EXT_CLASS
30 | #endif //#ifndef HLINKCTRL_EXT_CLASS
31 |
32 |
33 | /////////////////////////// Classes ///////////////////////////////////////////
34 |
35 | class HLINKCTRL_EXT_CLASS CHLinkCtrl : public CStatic
36 | {
37 | public:
38 | //Enums
39 | enum class TriStateSetting
40 | {
41 | YES,
42 | NO,
43 | HOVER
44 | };
45 |
46 | //Constructors / Destructors
47 | CHLinkCtrl();
48 |
49 | //Methods
50 | //Set or get the hyperlink to use
51 | void SetHyperLink(_In_ const CString& sLink);
52 | _NODISCARD CString GetHyperLink() const { return m_sLink; };
53 |
54 | //Set or get the hyperlink color
55 | void SetLinkColor(_In_ const COLORREF& color);
56 | _NODISCARD COLORREF GetLinkColor() const noexcept { return m_Color; };
57 |
58 | //Set or get the hyperlink color for visited links
59 | void SetVisitedLinkColor(_In_ const COLORREF& color);
60 | _NODISCARD COLORREF GetVisitedLinkColor() const noexcept { return m_VisitedColor; };
61 |
62 | //Set or get the hyperlink color for highlighted links
63 | void SetHighlightLinkColor(_In_ const COLORREF& color);
64 | _NODISCARD COLORREF GetHighlightLinkColor() const noexcept { return m_HighlightColor; };
65 | void SetUseHighlightColor(_In_ bool bUseHighlight) noexcept { m_bUseHighlight = bUseHighlight; };
66 |
67 | //Set or get whether the hyperlink should be drawn underlined
68 | void SetUnderline(_In_ TriStateSetting underline);
69 | _NODISCARD TriStateSetting GetUnderline() const noexcept { return m_Underline; };
70 |
71 | //Gets whether the hyperlink has been visited
72 | _NODISCARD bool GetVisited() const noexcept { return m_State == LinkState::VISITED; };
73 |
74 | //Should tooltips be shown or not
75 | void SetToolTips(_In_ bool bToolTip);
76 | _NODISCARD bool GetToolTips() const noexcept { return m_bToolTips; };
77 |
78 | //Set or get the ShellExecute verb to use
79 | void SetShellExecuteVerb(_In_ const CString& sVerb) { m_sShellExecuteVerb = sVerb; };
80 | _NODISCARD CString GetShellExecuteVerb() const { return m_sShellExecuteVerb; };
81 |
82 | //Executes the URL
83 | virtual bool Open();
84 |
85 | //Free and cache the parent window's bitmap
86 | void FreeParentBitmap();
87 | bool CacheParentBitmap();
88 |
89 | protected:
90 | //Enums
91 | enum class LinkState
92 | {
93 | NOT_VISITED,
94 | VISITED,
95 | HIGHLIGHTED
96 | };
97 |
98 | //Virtual methods
99 | COLORREF GetDefaultLinkColor(_In_z_ LPCTSTR pszSubKey, _In_z_ LPCTSTR lpszEntry, _In_ COLORREF clrDefault);
100 | bool GetDefaultLinkBoolean(_In_z_ LPCTSTR pszSubKey, _In_z_ LPCTSTR lpszEntry, _In_ bool bDefault);
101 | TriStateSetting GetDefaultLinkTriStateSetting(_In_z_ LPCTSTR pszSubKey, _In_z_ LPCTSTR lpszEntry, _In_ TriStateSetting defaultSettting);
102 | void PreSubclassWindow() override;
103 | INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const override;
104 |
105 | //Message handlers
106 | afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
107 | afx_msg void OnMouseMove(UINT nFlags, CPoint point);
108 | afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
109 | afx_msg BOOL OnToolTipTextA(UINT id, NMHDR* pNMHDR, LRESULT* pResult);
110 | afx_msg BOOL OnToolTipTextW(UINT id, NMHDR* pNMHDR, LRESULT* pResult);
111 | afx_msg LRESULT OnNcHitTest(CPoint point);
112 | afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
113 | afx_msg void OnEnable(BOOL bEnable);
114 | afx_msg BOOL OnEraseBkgnd(CDC* pDC);
115 | afx_msg void OnMouseLeave();
116 | afx_msg void OnStnClicked();
117 |
118 | //Member variables
119 | CString m_sLink;
120 | HCURSOR m_hLinkCursor;
121 | COLORREF m_Color;
122 | COLORREF m_VisitedColor;
123 | COLORREF m_HighlightColor;
124 | bool m_bUseHighlight;
125 | TriStateSetting m_Underline;
126 | LinkState m_State;
127 | LinkState m_OldState;
128 | CFont m_UnderlineFont;
129 | bool m_bToolTips;
130 | CString m_sShellExecuteVerb;
131 | bool m_bTrackLeave;
132 | CBitmap m_bmpParent;
133 |
134 | DECLARE_MESSAGE_MAP()
135 | };
136 |
137 | #endif //#ifndef __HLINKCTRL_H__
138 |
--------------------------------------------------------------------------------
/old/DevMgr.dsp:
--------------------------------------------------------------------------------
1 | # Microsoft Developer Studio Project File - Name="DevMgr" - Package Owner=<4>
2 | # Microsoft Developer Studio Generated Build File, Format Version 6.00
3 | # ** DO NOT EDIT **
4 |
5 | # TARGTYPE "Win32 (x86) Application" 0x0101
6 |
7 | CFG=DevMgr - Win32 Debug
8 | !MESSAGE This is not a valid makefile. To build this project using NMAKE,
9 | !MESSAGE use the Export Makefile command and run
10 | !MESSAGE
11 | !MESSAGE NMAKE /f "DevMgr.mak".
12 | !MESSAGE
13 | !MESSAGE You can specify a configuration when running NMAKE
14 | !MESSAGE by defining the macro CFG on the command line. For example:
15 | !MESSAGE
16 | !MESSAGE NMAKE /f "DevMgr.mak" CFG="DevMgr - Win32 Debug"
17 | !MESSAGE
18 | !MESSAGE Possible choices for configuration are:
19 | !MESSAGE
20 | !MESSAGE "DevMgr - Win32 Release" (based on "Win32 (x86) Application")
21 | !MESSAGE "DevMgr - Win32 Debug" (based on "Win32 (x86) Application")
22 | !MESSAGE
23 |
24 | # Begin Project
25 | # PROP AllowPerConfigDependencies 0
26 | # PROP Scc_ProjName ""
27 | # PROP Scc_LocalPath ""
28 | CPP=cl.exe
29 | MTL=midl.exe
30 | RSC=rc.exe
31 |
32 | !IF "$(CFG)" == "DevMgr - Win32 Release"
33 |
34 | # PROP BASE Use_MFC 0
35 | # PROP BASE Use_Debug_Libraries 0
36 | # PROP BASE Output_Dir "Release"
37 | # PROP BASE Intermediate_Dir "Release"
38 | # PROP BASE Target_Dir ""
39 | # PROP Use_MFC 0
40 | # PROP Use_Debug_Libraries 0
41 | # PROP Output_Dir "Release"
42 | # PROP Intermediate_Dir "Release"
43 | # PROP Target_Dir ""
44 | # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
45 | # ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
46 | # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
47 | # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
48 | # ADD BASE RSC /l 0x409 /d "NDEBUG"
49 | # ADD RSC /l 0x409 /d "NDEBUG"
50 | BSC32=bscmake.exe
51 | # ADD BASE BSC32 /nologo
52 | # ADD BSC32 /nologo
53 | LINK32=link.exe
54 | # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
55 | # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
56 |
57 | !ELSEIF "$(CFG)" == "DevMgr - Win32 Debug"
58 |
59 | # PROP BASE Use_MFC 0
60 | # PROP BASE Use_Debug_Libraries 1
61 | # PROP BASE Output_Dir "Debug"
62 | # PROP BASE Intermediate_Dir "Debug"
63 | # PROP BASE Target_Dir ""
64 | # PROP Use_MFC 0
65 | # PROP Use_Debug_Libraries 1
66 | # PROP Output_Dir "Debug"
67 | # PROP Intermediate_Dir "Debug"
68 | # PROP Target_Dir ""
69 | # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
70 | # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
71 | # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
72 | # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
73 | # ADD BASE RSC /l 0x409 /d "_DEBUG"
74 | # ADD RSC /l 0x409 /d "_DEBUG"
75 | BSC32=bscmake.exe
76 | # ADD BASE BSC32 /nologo
77 | # ADD BSC32 /nologo
78 | LINK32=link.exe
79 | # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
80 | # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
81 |
82 | !ENDIF
83 |
84 | # Begin Target
85 |
86 | # Name "DevMgr - Win32 Release"
87 | # Name "DevMgr - Win32 Debug"
88 | # Begin Group "Source Files"
89 |
90 | # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
91 | # Begin Source File
92 |
93 | SOURCE=.\DevMgr.c
94 | # End Source File
95 | # Begin Source File
96 |
97 | SOURCE=.\DevMgr.rc
98 | # End Source File
99 | # Begin Source File
100 |
101 | SOURCE=.\GetTypeInfo.c
102 | # End Source File
103 | # Begin Source File
104 |
105 | SOURCE=.\Setup.c
106 | # End Source File
107 | # Begin Source File
108 |
109 | SOURCE=.\SysSetup.c
110 | # End Source File
111 | # Begin Source File
112 |
113 | SOURCE=.\Util.c
114 | # End Source File
115 | # Begin Source File
116 |
117 | SOURCE=.\WDMSetup.c
118 | # End Source File
119 | # End Group
120 | # Begin Group "Header Files"
121 |
122 | # PROP Default_Filter "h;hpp;hxx;hm;inl"
123 | # Begin Source File
124 |
125 | SOURCE=.\DevMgr.h
126 | # End Source File
127 | # Begin Source File
128 |
129 | SOURCE=.\GetTypeInfo.h
130 | # End Source File
131 | # Begin Source File
132 |
133 | SOURCE=.\resource.h
134 | # End Source File
135 | # Begin Source File
136 |
137 | SOURCE=.\Setup.h
138 | # End Source File
139 | # Begin Source File
140 |
141 | SOURCE=.\SysSetup.h
142 | # End Source File
143 | # Begin Source File
144 |
145 | SOURCE=.\Util.h
146 | # End Source File
147 | # Begin Source File
148 |
149 | SOURCE=.\WDMSetup.h
150 | # End Source File
151 | # End Group
152 | # Begin Group "Resource Files"
153 |
154 | # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
155 | # Begin Source File
156 |
157 | SOURCE=.\MYCOMP.BMP
158 | # End Source File
159 | # Begin Source File
160 |
161 | SOURCE=.\MYCOMP.ICO
162 | # End Source File
163 | # End Group
164 | # End Target
165 | # End Project
166 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 |
2 | # Contributor Covenant Code of Conduct
3 |
4 | ## Our Pledge
5 |
6 | We as members, contributors, and leaders pledge to make participation in our
7 | community a harassment-free experience for everyone, regardless of age, body
8 | size, visible or invisible disability, ethnicity, sex characteristics, gender
9 | identity and expression, level of experience, education, socio-economic status,
10 | nationality, personal appearance, race, religion, or sexual identity
11 | and orientation.
12 |
13 | We pledge to act and interact in ways that contribute to an open, welcoming,
14 | diverse, inclusive, and healthy community.
15 |
16 | ## Our Standards
17 |
18 | Examples of behavior that contributes to a positive environment for our
19 | community include:
20 |
21 | * Demonstrating empathy and kindness toward other people
22 | * Being respectful of differing opinions, viewpoints, and experiences
23 | * Giving and gracefully accepting constructive feedback
24 | * Accepting responsibility and apologizing to those affected by our mistakes,
25 | and learning from the experience
26 | * Focusing on what is best not just for us as individuals, but for the
27 | overall community
28 |
29 | Examples of unacceptable behavior include:
30 |
31 | * The use of sexualized language or imagery, and sexual attention or
32 | advances of any kind
33 | * Trolling, insulting or derogatory comments, and personal or political attacks
34 | * Public or private harassment
35 | * Publishing others' private information, such as a physical or email
36 | address, without their explicit permission
37 | * Other conduct which could reasonably be considered inappropriate in a
38 | professional setting
39 |
40 | ## Enforcement Responsibilities
41 |
42 | Community leaders are responsible for clarifying and enforcing our standards of
43 | acceptable behavior and will take appropriate and fair corrective action in
44 | response to any behavior that they deem inappropriate, threatening, offensive,
45 | or harmful.
46 |
47 | Community leaders have the right and responsibility to remove, edit, or reject
48 | comments, commits, code, wiki edits, issues, and other contributions that are
49 | not aligned to this Code of Conduct, and will communicate reasons for moderation
50 | decisions when appropriate.
51 |
52 | ## Scope
53 |
54 | This Code of Conduct applies within all community spaces, and also applies when
55 | an individual is officially representing the community in public spaces.
56 | Examples of representing our community include using an official e-mail address,
57 | posting via an official social media account, or acting as an appointed
58 | representative at an online or offline event.
59 |
60 | ## Enforcement
61 |
62 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
63 | reported to the community leaders responsible for enforcement at
64 | [stefan-mihai@moga.doctor](mailto:stefan-mihai@moga.doctor).
65 | All complaints will be reviewed and investigated promptly and fairly.
66 |
67 | All community leaders are obligated to respect the privacy and security of the
68 | reporter of any incident.
69 |
70 | ## Enforcement Guidelines
71 |
72 | Community leaders will follow these Community Impact Guidelines in determining
73 | the consequences for any action they deem in violation of this Code of Conduct:
74 |
75 | ### 1. Correction
76 |
77 | **Community Impact**: Use of inappropriate language or other behavior deemed
78 | unprofessional or unwelcome in the community.
79 |
80 | **Consequence**: A private, written warning from community leaders, providing
81 | clarity around the nature of the violation and an explanation of why the
82 | behavior was inappropriate. A public apology may be requested.
83 |
84 | ### 2. Warning
85 |
86 | **Community Impact**: A violation through a single incident or series
87 | of actions.
88 |
89 | **Consequence**: A warning with consequences for continued behavior. No
90 | interaction with the people involved, including unsolicited interaction with
91 | those enforcing the Code of Conduct, for a specified period of time. This
92 | includes avoiding interactions in community spaces as well as external channels
93 | like social media. Violating these terms may lead to a temporary or
94 | permanent ban.
95 |
96 | ### 3. Temporary Ban
97 |
98 | **Community Impact**: A serious violation of community standards, including
99 | sustained inappropriate behavior.
100 |
101 | **Consequence**: A temporary ban from any sort of interaction or public
102 | communication with the community for a specified period of time. No public or
103 | private interaction with the people involved, including unsolicited interaction
104 | with those enforcing the Code of Conduct, is allowed during this period.
105 | Violating these terms may lead to a permanent ban.
106 |
107 | ### 4. Permanent Ban
108 |
109 | **Community Impact**: Demonstrating a pattern of violation of community
110 | standards, including sustained inappropriate behavior, harassment of an
111 | individual, or aggression toward or disparagement of classes of individuals.
112 |
113 | **Consequence**: A permanent ban from any sort of public interaction within
114 | the community.
115 |
116 | ## Attribution
117 |
118 | This Code of Conduct is adapted from the [Contributor Covenant][homepage],
119 | version 2.0, available at
120 | [https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
121 |
122 | Community Impact Guidelines were inspired by
123 | [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
124 |
125 | For answers to common questions about this code of conduct, see the FAQ at
126 | [https://www.contributor-covenant.org/faq][FAQ]. Translations are available
127 | at [https://www.contributor-covenant.org/translations][translations].
128 |
129 | [homepage]: https://www.contributor-covenant.org
130 | [v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
131 | [Mozilla CoC]: https://github.com/mozilla/diversity
132 | [FAQ]: https://www.contributor-covenant.org/faq
133 | [translations]: https://www.contributor-covenant.org/translations
134 |
135 |
--------------------------------------------------------------------------------
/old/DevMgr.rc:
--------------------------------------------------------------------------------
1 | //Microsoft Developer Studio generated resource script.
2 | //
3 | #include "resource.h"
4 |
5 | #define APSTUDIO_READONLY_SYMBOLS
6 | /////////////////////////////////////////////////////////////////////////////
7 | //
8 | // Generated from the TEXTINCLUDE 2 resource.
9 | //
10 | #include "afxres.h"
11 |
12 | /////////////////////////////////////////////////////////////////////////////
13 | #undef APSTUDIO_READONLY_SYMBOLS
14 |
15 | /////////////////////////////////////////////////////////////////////////////
16 | // English (U.S.) resources
17 |
18 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
19 | #ifdef _WIN32
20 | LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
21 | #pragma code_page(1252)
22 | #endif //_WIN32
23 |
24 | /////////////////////////////////////////////////////////////////////////////
25 | //
26 | // Dialog
27 | //
28 |
29 | IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 429, 310
30 | STYLE DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION |
31 | WS_SYSMENU
32 | CAPTION "Driver Install Tool"
33 | FONT 8, "MS Sans Serif"
34 | BEGIN
35 | CONTROL "Manual Setting(Do not use INF file)",IDC_RADIO1,"Button",
36 | BS_AUTORADIOBUTTON | WS_GROUP,69,281,136,8
37 | CONTROL "Use INF file",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,
38 | 225,281,64,8
39 | PUSHBUTTON "Add",IDC_ADDBTN,7,294,42,9,BS_FLAT
40 | PUSHBUTTON "Delete",IDC_DELBTN,76,294,42,9,BS_FLAT
41 | PUSHBUTTON "Refresh",IDC_REFBTN,155,294,42,9,BS_FLAT
42 | PUSHBUTTON "Exit",IDC_EXIT,380,294,42,9,BS_FLAT
43 | CONTROL "Tree1",IDC_TREE1,"SysTreeView32",TVS_HASBUTTONS |
44 | TVS_HASLINES | TVS_DISABLEDRAGDROP | TVS_FULLROWSELECT |
45 | WS_BORDER | WS_TABSTOP,7,7,112,271
46 | CONTROL "List1",IDC_LIST1,"SysListView32",LVS_REPORT |
47 | LVS_SINGLESEL | LVS_SHOWSELALWAYS | WS_BORDER |
48 | WS_TABSTOP,122,7,300,203
49 | CONTROL "List2",IDC_LIST2,"SysListView32",LVS_REPORT | WS_BORDER |
50 | WS_TABSTOP,122,212,300,66
51 | PUSHBUTTON "Copy Path",IDC_COPYPATHBTN,309,294,42,9,BS_FLAT
52 | PUSHBUTTON "Disable",IDC_DISABLEBTN,235,294,42,9,BS_FLAT
53 | END
54 |
55 | IDD_DIALOG2 DIALOG DISCARDABLE 0, 0, 238, 191
56 | STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
57 | CAPTION "Dialog"
58 | FONT 8, "MS Sans Serif"
59 | BEGIN
60 | PUSHBUTTON "...",IDC_OPENINFBTN,216,7,15,14,BS_FLAT
61 | CONTROL "CRITICAL ERROR",IDC_PARAMOPT1,"Button",
62 | BS_AUTORADIOBUTTON | BS_FLAT | WS_GROUP,19,51,86,8
63 | CONTROL "IGNORE ERROR",IDC_PARAMOPT2,"Button",BS_AUTORADIOBUTTON |
64 | BS_FLAT,19,74,84,8
65 | CONTROL "NORMAL ERROR",IDC_PARAMOPT3,"Button",BS_AUTORADIOBUTTON |
66 | BS_FLAT,19,101,86,8
67 | CONTROL "SEVERE ERROR",IDC_PARAMOPT4,"Button",BS_AUTORADIOBUTTON |
68 | BS_FLAT,19,129,88,10
69 | CONTROL "BOOT START",IDC_PARAMOPT5,"Button",BS_AUTORADIOBUTTON |
70 | BS_FLAT | WS_GROUP,131,51,86,8
71 | CONTROL "SYSTEM START",IDC_PARAMOPT6,"Button",BS_AUTORADIOBUTTON |
72 | BS_FLAT,131,70,88,8
73 | CONTROL "AUTO START",IDC_PARAMOPT7,"Button",BS_AUTORADIOBUTTON |
74 | BS_FLAT,131,89,88,8
75 | CONTROL "DEMAND START",IDC_PARAMOPT8,"Button",BS_AUTORADIOBUTTON |
76 | BS_FLAT,131,108,88,8
77 | CONTROL "DISABLED",IDC_PARAMOPT9,"Button",BS_AUTORADIOBUTTON |
78 | BS_FLAT,131,129,88,8
79 | EDITTEXT IDC_DRVNAMETXT,58,152,166,12,ES_AUTOHSCROLL
80 | PUSHBUTTON "Install",IDC_INSTALLBTN,7,170,50,14,BS_FLAT
81 | PUSHBUTTON "Reset",IDC_RESETBTN,93,170,50,14,BS_FLAT
82 | PUSHBUTTON "Exit",IDC_IEXIT,181,170,50,14,BS_FLAT
83 | LTEXT "INF File:",IDC_STATIC,7,7,32,9
84 | LTEXT "",IDC_INFLBL,41,7,173,14,WS_BORDER
85 | GROUPBOX "Parameter Setting",IDC_STATIC,7,25,224,143,BS_FLAT
86 | GROUPBOX "Error Control",IDC_STATIC,13,34,100,116
87 | GROUPBOX "Start Type",IDC_STATIC,125,34,100,116
88 | LTEXT "Driver Name:",IDC_STATIC,13,155,44,11
89 | END
90 |
91 |
92 | /////////////////////////////////////////////////////////////////////////////
93 | //
94 | // DESIGNINFO
95 | //
96 |
97 | #ifdef APSTUDIO_INVOKED
98 | GUIDELINES DESIGNINFO DISCARDABLE
99 | BEGIN
100 | IDD_DIALOG1, DIALOG
101 | BEGIN
102 | LEFTMARGIN, 7
103 | RIGHTMARGIN, 422
104 | TOPMARGIN, 7
105 | BOTTOMMARGIN, 303
106 | END
107 |
108 | IDD_DIALOG2, DIALOG
109 | BEGIN
110 | LEFTMARGIN, 7
111 | RIGHTMARGIN, 231
112 | TOPMARGIN, 7
113 | BOTTOMMARGIN, 184
114 | END
115 | END
116 | #endif // APSTUDIO_INVOKED
117 |
118 |
119 | #ifdef APSTUDIO_INVOKED
120 | /////////////////////////////////////////////////////////////////////////////
121 | //
122 | // TEXTINCLUDE
123 | //
124 |
125 | 1 TEXTINCLUDE DISCARDABLE
126 | BEGIN
127 | "resource.h\0"
128 | END
129 |
130 | 2 TEXTINCLUDE DISCARDABLE
131 | BEGIN
132 | "#include ""afxres.h""\r\n"
133 | "\0"
134 | END
135 |
136 | 3 TEXTINCLUDE DISCARDABLE
137 | BEGIN
138 | "\r\n"
139 | "\0"
140 | END
141 |
142 | #endif // APSTUDIO_INVOKED
143 |
144 |
145 | /////////////////////////////////////////////////////////////////////////////
146 | //
147 | // Bitmap
148 | //
149 |
150 | IDB_MYCOMP BITMAP DISCARDABLE "MYCOMP.BMP"
151 | #endif // English (U.S.) resources
152 | /////////////////////////////////////////////////////////////////////////////
153 |
154 |
155 |
156 | #ifndef APSTUDIO_INVOKED
157 | /////////////////////////////////////////////////////////////////////////////
158 | //
159 | // Generated from the TEXTINCLUDE 3 resource.
160 | //
161 |
162 |
163 | /////////////////////////////////////////////////////////////////////////////
164 | #endif // not APSTUDIO_INVOKED
165 |
166 |
--------------------------------------------------------------------------------
/SortListCtrl.cpp:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | // SortListCtrl.cpp : implementation file
17 | //
18 |
19 | #include "stdafx.h"
20 | #include "IntelliTask.h"
21 | #include "SortListCtrl.h"
22 |
23 | // CSortListCtrl
24 |
25 | IMPLEMENT_DYNAMIC(CSortListCtrl, CMFCListCtrl)
26 |
27 | CSortListCtrl::CSortListCtrl()
28 | {
29 | m_pSystemSnapshot = nullptr;
30 | }
31 |
32 | CSortListCtrl::~CSortListCtrl()
33 | {
34 | }
35 |
36 | BEGIN_MESSAGE_MAP(CSortListCtrl, CMFCListCtrl)
37 | END_MESSAGE_MAP()
38 |
39 | // CSortListCtrl message handlers
40 |
41 | int CSortListCtrl::OnCompareItems(LPARAM lParam1, LPARAM lParam2, int iColumn)
42 | {
43 | if ((-1 == iColumn) || (1 == iColumn))
44 | {
45 | if (m_pSystemSnapshot != nullptr)
46 | {
47 | CProcessData* pParam1 = m_pSystemSnapshot->GetProcessID((DWORD)lParam1);
48 | CProcessData* pParam2 = m_pSystemSnapshot->GetProcessID((DWORD)lParam2);
49 | if ((pParam1 != nullptr) && (pParam2 != nullptr))
50 | {
51 | CString strFileName1 = pParam1->GetFileName();
52 | CString strFileName2 = pParam2->GetFileName();
53 | const int nRetVal = strFileName1.CompareNoCase(strFileName2);
54 | if (nRetVal == 0)
55 | {
56 | return (pParam1->GetProcessID() - pParam2->GetProcessID());
57 | }
58 | else
59 | {
60 | return nRetVal;
61 | }
62 | }
63 | }
64 | }
65 | else
66 | {
67 | if (0 == iColumn)
68 | {
69 | if (m_pSystemSnapshot != nullptr)
70 | {
71 | CProcessData* pParam1 = m_pSystemSnapshot->GetProcessID((DWORD)lParam1);
72 | CProcessData* pParam2 = m_pSystemSnapshot->GetProcessID((DWORD)lParam2);
73 | if ((pParam1 != nullptr) && (pParam2 != nullptr))
74 | {
75 | return (pParam1->GetProcessID() - pParam2->GetProcessID());
76 | }
77 | }
78 | }
79 | else
80 | {
81 | if (2 == iColumn)
82 | {
83 | if (m_pSystemSnapshot != nullptr)
84 | {
85 | CProcessData* pParam1 = m_pSystemSnapshot->GetProcessID((DWORD)lParam1);
86 | CProcessData* pParam2 = m_pSystemSnapshot->GetProcessID((DWORD)lParam2);
87 | if ((pParam1 != nullptr) && (pParam2 != nullptr))
88 | {
89 | // return (int)(pParam1->GetProcessorUsage() - pParam2->GetProcessorUsage());
90 | return (pParam1->GetProcessorUsage() < pParam2->GetProcessorUsage()) ? -1 : 1;
91 | }
92 | }
93 | }
94 | else
95 | {
96 | if (3 == iColumn)
97 | {
98 | if (m_pSystemSnapshot != nullptr)
99 | {
100 | CProcessData* pParam1 = m_pSystemSnapshot->GetProcessID((DWORD)lParam1);
101 | CProcessData* pParam2 = m_pSystemSnapshot->GetProcessID((DWORD)lParam2);
102 | if ((pParam1 != nullptr) && (pParam2 != nullptr))
103 | {
104 | return (pParam1->GetMemoryUsage() - pParam2->GetMemoryUsage());
105 | }
106 | }
107 | }
108 | else
109 | {
110 | if (4 == iColumn)
111 | {
112 | if (m_pSystemSnapshot != nullptr)
113 | {
114 | CProcessData* pParam1 = m_pSystemSnapshot->GetProcessID((DWORD)lParam1);
115 | CProcessData* pParam2 = m_pSystemSnapshot->GetProcessID((DWORD)lParam2);
116 | if ((pParam1 != nullptr) && (pParam2 != nullptr))
117 | {
118 | CString strDescription1 = pParam1->GetDescription();
119 | CString strDescription2 = pParam2->GetDescription();
120 | const int nRetVal = strDescription1.CompareNoCase(strDescription2);
121 | if (nRetVal == 0)
122 | {
123 | return (pParam1->GetProcessID() - pParam2->GetProcessID());
124 | }
125 | else
126 | {
127 | return nRetVal;
128 | }
129 | }
130 | }
131 | }
132 | else
133 | {
134 | if (5 == iColumn)
135 | {
136 | if (m_pSystemSnapshot != nullptr)
137 | {
138 | CProcessData* pParam1 = m_pSystemSnapshot->GetProcessID((DWORD)lParam1);
139 | CProcessData* pParam2 = m_pSystemSnapshot->GetProcessID((DWORD)lParam2);
140 | if ((pParam1 != nullptr) && (pParam2 != nullptr))
141 | {
142 | CString strCompany1 = pParam1->GetCompany();
143 | CString strCompany2 = pParam2->GetCompany();
144 | const int nRetVal = strCompany1.CompareNoCase(strCompany2);
145 | if (nRetVal == 0)
146 | {
147 | return (pParam1->GetProcessID() - pParam2->GetProcessID());
148 | }
149 | else
150 | {
151 | return nRetVal;
152 | }
153 | }
154 | }
155 | }
156 | else
157 | {
158 | if (6 == iColumn)
159 | {
160 | if (m_pSystemSnapshot != nullptr)
161 | {
162 | CProcessData* pParam1 = m_pSystemSnapshot->GetProcessID((DWORD)lParam1);
163 | CProcessData* pParam2 = m_pSystemSnapshot->GetProcessID((DWORD)lParam2);
164 | if ((pParam1 != nullptr) && (pParam2 != nullptr))
165 | {
166 | CString strVersion1 = pParam1->GetVersion();
167 | CString strVersion2 = pParam2->GetVersion();
168 | const int nRetVal = strVersion1.CompareNoCase(strVersion2);
169 | if (nRetVal == 0)
170 | {
171 | return (pParam1->GetProcessID() - pParam2->GetProcessID());
172 | }
173 | else
174 | {
175 | return nRetVal;
176 | }
177 | }
178 | }
179 | }
180 | }
181 | }
182 | }
183 | }
184 | }
185 | }
186 | return 0;
187 | }
188 |
--------------------------------------------------------------------------------
/ReadMe.txt:
--------------------------------------------------------------------------------
1 | ================================================================================
2 | MICROSOFT FOUNDATION CLASS LIBRARY : IntelliTask Project Overview
3 | ===============================================================================
4 |
5 | The application wizard has created this IntelliTask application for
6 | you. This application not only demonstrates the basics of using the Microsoft
7 | Foundation Classes but is also a starting point for writing your application.
8 |
9 | This file contains a summary of what you will find in each of the files that
10 | make up your IntelliTask application.
11 |
12 | IntelliTask.vcxproj
13 | This is the main project file for VC++ projects generated using an application wizard.
14 | It contains information about the version of Visual C++ that generated the file, and
15 | information about the platforms, configurations, and project features selected with the
16 | application wizard.
17 |
18 | IntelliTask.vcxproj.filters
19 | This is the filters file for VC++ projects generated using an Application Wizard.
20 | It contains information about the association between the files in your project
21 | and the filters. This association is used in the IDE to show grouping of files with
22 | similar extensions under a specific node (for e.g. ".cpp" files are associated with the
23 | "Source Files" filter).
24 |
25 | IntelliTask.h
26 | This is the main header file for the application. It includes other
27 | project specific headers (including Resource.h) and declares the
28 | CIntelliTaskApp application class.
29 |
30 | IntelliTask.cpp
31 | This is the main application source file that contains the application
32 | class CIntelliTaskApp.
33 |
34 | IntelliTask.rc
35 | This is a listing of all of the Microsoft Windows resources that the
36 | program uses. It includes the icons, bitmaps, and cursors that are stored
37 | in the RES subdirectory. This file can be directly edited in Microsoft
38 | Visual C++. Your project resources are in 1033.
39 |
40 | res\IntelliTask.ico
41 | This is an icon file, which is used as the application's icon. This
42 | icon is included by the main resource file IntelliTask.rc.
43 |
44 | res\IntelliTask.rc2
45 | This file contains resources that are not edited by Microsoft
46 | Visual C++. You should place all resources not editable by
47 | the resource editor in this file.
48 |
49 | /////////////////////////////////////////////////////////////////////////////
50 |
51 | For the main frame window:
52 | The project includes a standard MFC interface.
53 |
54 | MainFrame.h, MainFrame.cpp
55 | These files contain the frame class CMainFrame, which is derived from
56 | CFrameWnd and controls all SDI frame features.
57 |
58 | res\Toolbar.bmp
59 | This bitmap file is used to create tiled images for the toolbar.
60 | The initial toolbar and status bar are constructed in the CMainFrame
61 | class. Edit this toolbar bitmap using the resource editor, and
62 | update the IDR_MAINFRAME TOOLBAR array in IntelliTask.rc to add
63 | toolbar buttons.
64 | /////////////////////////////////////////////////////////////////////////////
65 |
66 |
67 |
68 | /////////////////////////////////////////////////////////////////////////////
69 |
70 | Help Support:
71 |
72 | hlp\IntelliTask.hhp
73 | This file is a help project file. It contains the data needed to
74 | compile the help files into a .chm file.
75 |
76 | hlp\IntelliTask.hhc
77 | This file lists the contents of the help project.
78 |
79 | hlp\IntelliTask.hhk
80 | This file contains an index of the help topics.
81 |
82 | hlp\afxcore.htm
83 | This file contains the standard help topics for standard MFC
84 | commands and screen objects. Add your own help topics to this file.
85 |
86 | makehtmlhelp.bat
87 | This file is used by the build system to compile the help files.
88 |
89 | hlp\Images\*.gif
90 | These are bitmap files required by the standard help file topics for
91 | Microsoft Foundation Class Library standard commands.
92 |
93 |
94 | /////////////////////////////////////////////////////////////////////////////
95 |
96 | Other Features:
97 |
98 | ActiveX Controls
99 | The application includes support to use ActiveX controls.
100 |
101 | Database support
102 | The application wizard has added the basic level of database support for your program.
103 | Only the needed files have been included.
104 |
105 | Windows Sockets
106 | The application has support for establishing communications over TCP/IP networks.
107 |
108 | /////////////////////////////////////////////////////////////////////////////
109 |
110 | Other standard files:
111 |
112 | StdAfx.h, StdAfx.cpp
113 | These files are used to build a precompiled header (PCH) file
114 | named IntelliTask.pch and a precompiled types file named StdAfx.obj.
115 |
116 | Resource.h
117 | This is the standard header file, which defines new resource IDs.
118 | Microsoft Visual C++ reads and updates this file.
119 |
120 | IntelliTask.manifest
121 | Application manifest files are used by Windows XP to describe an applications
122 | dependency on specific versions of Side-by-Side assemblies. The loader uses this
123 | information to load the appropriate assembly from the assembly cache or private
124 | from the application. The Application manifest maybe included for redistribution
125 | as an external .manifest file that is installed in the same folder as the application
126 | executable or it may be included in the executable in the form of a resource.
127 | /////////////////////////////////////////////////////////////////////////////
128 |
129 | Other notes:
130 |
131 | The application wizard uses "TODO:" to indicate parts of the source code you
132 | should add to or customize.
133 |
134 | If your application uses MFC in a shared DLL, you will need
135 | to redistribute the MFC DLLs. If your application is in a language
136 | other than the operating system's locale, you will also have to
137 | redistribute the corresponding localized resources MFC100XXX.DLL.
138 | For more information on both of these topics, please see the section on
139 | redistributing Visual C++ applications in MSDN documentation.
140 |
141 | /////////////////////////////////////////////////////////////////////////////
142 |
--------------------------------------------------------------------------------
/SoftwareContentRegister.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IntelliTask - Software Content Register
6 |
7 |
8 |
9 |
10 |
11 |
12 |
36 |
37 |
38 |
39 |
40 |
Software Content Register
41 |
Release Name: IntelliTask
42 | Description: IntelliTask is an alternative Windows version to the famous Microsoft Task Manager!
43 | Outgoing License: GNU General Public License v3.0
44 | Type of content: static/dynamic libraries, source code, binary
45 |
46 |
genUp4win
47 | Desciption: This library is a generic updater for Windows.
48 | Version: 2.09
49 | Home Page: https://github.com/mihaimoga/genUp4win
50 | License: MIT
51 | Format: source code, binary
52 |
53 |
CHLinkCtrl
54 | Description: This class allows you to create a static control on a window or dialog which behaves similar to a hyperlink as seen on a web page. When the mouse moves over the text the cursor becomes a hand and when you click on the text the hyperlink is executed.
55 | Version: 1.43
56 | Home Page: https://www.naughter.com/hlinkctrl.html
57 | License: Custom (PJ Naughter's license)
58 | Format: source code, binary
59 |
60 |
CInstanceChecker
61 | Description: This class implements single instance apps. Limiting your app to single instance is more tricky in Win32 with the removal of the hPrevInstance parameter from WinMain and the introduction of separate address spaces.
62 | Version: 1.25
63 | Home Page: https://www.naughter.com/sinstance.html
64 | License: Custom (PJ Naughter's license)
65 | Format: source code, binary
66 |
67 |
CVersionInfo
68 | Description: This simple little class encapsulates the SDK calls which access version info from Win32 files. Most executables and DLL's have a VS_VERSION_INFO resource associated with them and this class provides a simple C++ class to programmatically access this information.
69 | Version: 1.13
70 | Home Page: https://www.naughter.com/versioninfo.html
71 | License: Custom (PJ Naughter's license)
72 | Format: source code, binary
73 |
74 |
DtWinVer
75 | Description: DtWinVer is a C++ class which provides a comprehensive method to determine which OS the program that calls it is running on. The routine provides the emulated OS as well as the underlying OS. e.g to a DOS program Windows 95 looks like MS-DOS 7.0.
76 | Version: 2.72
77 | Home Page: https://www.naughter.com/dtwinver.html
78 | License: Custom (PJ Naughter's license)
79 | Format: source code, binary
PJ Naughter's license: You are allowed to include the source code in any product (commercial, shareware, freeware or otherwise) when your product is released in binary form. You are allowed to modify the source code in any way you want except you cannot modify the copyright details at the top of each module. If you want to distribute source code with your application, then you are only allowed to distribute versions released by the author. This is to maintain a single distribution point for the source code.
89 |
90 |
91 |
92 |
93 |
94 |
95 |
--------------------------------------------------------------------------------
/ProcessList.cpp:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2012-2026 Stefan-Mihai MOGA
2 | This file is part of IntelliTask application developed by Stefan-Mihai MOGA.
3 | IntelliTask is an alternative Windows version to the famous Task Manager!
4 |
5 | IntelliTask is free software: you can redistribute it and/or modify it
6 | under the terms of the GNU General Public License as published by the Open
7 | Source Initiative, either version 3 of the License, or any later version.
8 |
9 | IntelliTask is distributed in the hope that it will be useful, but
10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License along with
14 | IntelliTask. If not, see */
15 |
16 | #include "stdafx.h"
17 | #include "IntelliTask.h"
18 | #include "ProcessList.h"
19 | #include "VersionInfo.h"
20 |
21 | IMPLEMENT_DYNAMIC(CProcessData, CObject)
22 |
23 | IMPLEMENT_DYNAMIC(CSystemSnapshot, CObject)
24 |
25 | ///////////////////////////////////////////////////////////////////////////////
26 | // CProcessData member functions
27 | ///////////////////////////////////////////////////////////////////////////////
28 |
29 | CProcessData::CProcessData()
30 | {
31 | m_dwProcessID = 0;
32 | m_dwParentProcessID = 0;
33 | m_dwPriority = 0;
34 | m_cpuUsage = 0;
35 | m_memUsage = 0;
36 | }
37 |
38 | CProcessData::CProcessData(DWORD dwProcessID, DWORD dwParentProcessID, DWORD dwPriority, DOUBLE cpuUsage, DWORD memUsage,
39 | CString strFileName, CString strFilePath, CString strDescription, CString strCompany, CString strVersion)
40 | {
41 | m_dwProcessID = dwProcessID;
42 | m_dwParentProcessID = dwParentProcessID;
43 | m_dwPriority = dwPriority;
44 | m_cpuUsage = cpuUsage;
45 | m_memUsage = memUsage;
46 | m_strFileName = strFileName;
47 | m_strFilePath = strFilePath;
48 | m_strDescription = strDescription;
49 | m_strCompany = strCompany;
50 | m_strVersion = strVersion;
51 | }
52 |
53 | CProcessData::~CProcessData()
54 | {
55 | }
56 |
57 | ///////////////////////////////////////////////////////////////////////////////
58 | // CSystemSnapshot member functions
59 | ///////////////////////////////////////////////////////////////////////////////
60 |
61 | CSystemSnapshot::CSystemSnapshot()
62 | {
63 | }
64 |
65 | CSystemSnapshot::~CSystemSnapshot()
66 | {
67 | VERIFY(RemoveAll());
68 | }
69 |
70 | bool CSystemSnapshot::RemoveAll()
71 | {
72 | const int nSize = (int)m_arrProcessList.GetSize();
73 | for (int nIndex = 0; nIndex < nSize; nIndex++)
74 | {
75 | CProcessData* pProcessData = m_arrProcessList.GetAt(nIndex);
76 | ASSERT(pProcessData != nullptr);
77 | delete pProcessData;
78 | pProcessData = nullptr;
79 | }
80 | m_arrProcessList.RemoveAll();
81 | return true;
82 | }
83 |
84 | bool CSystemSnapshot::Refresh()
85 | {
86 | HANDLE hSnapshot = nullptr;
87 | PROCESSENTRY32 pe32 = { 0 };
88 |
89 | VERIFY(RemoveAll());
90 | if ((hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)) != INVALID_HANDLE_VALUE)
91 | {
92 | pe32.dwSize = sizeof(PROCESSENTRY32);
93 | if (!Process32First(hSnapshot, &pe32))
94 | {
95 | return false;
96 | }
97 |
98 | do
99 | {
100 | VERIFY(InsertProcess(pe32));
101 | } while (Process32Next(hSnapshot, &pe32));
102 |
103 | VERIFY(CloseHandle(hSnapshot));
104 | }
105 | else
106 | {
107 | return false;
108 | }
109 | return true;
110 | }
111 |
112 | CProcessData* CSystemSnapshot::InsertProcess(PROCESSENTRY32& pe32)
113 | {
114 | HANDLE hProcess = nullptr;
115 | PROCESS_MEMORY_COUNTERS pmc = { 0 };
116 | pmc.cb = sizeof(PROCESS_MEMORY_COUNTERS);
117 |
118 | CProcessData* pProcessData = new CProcessData();
119 | m_arrProcessList.Add(pProcessData);
120 | pProcessData->SetProcessID(pe32.th32ProcessID);
121 | pProcessData->SetParentProcessID(pe32.th32ParentProcessID);
122 | pProcessData->SetFileName(pe32.szExeFile);
123 |
124 | if ((hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, false, pe32.th32ProcessID)) != nullptr)
125 | {
126 | pProcessData->m_pCpuUsage.SetProcessID(pe32.th32ProcessID);
127 | pProcessData->SetProcessorUsage(pProcessData->m_pCpuUsage.GetUsage());
128 | if (GetProcessMemoryInfo(hProcess, &pmc, pmc.cb))
129 | {
130 | pProcessData->SetMemoryUsage((DWORD)pmc.WorkingSetSize);
131 | }
132 |
133 | TCHAR lpszFullPath[MAX_PATH] = { 0 };
134 | if (GetModuleFileNameEx(hProcess, nullptr, lpszFullPath, MAX_PATH))
135 | {
136 | pProcessData->SetFilePath(lpszFullPath);
137 | CVersionInfo pVersionInfo;
138 | if (pVersionInfo.Load(lpszFullPath))
139 | {
140 | pProcessData->SetDescription(pVersionInfo.GetFileDescription().c_str());
141 | pProcessData->SetCompany(pVersionInfo.GetCompanyName().c_str());
142 | pProcessData->SetVersion(pVersionInfo.GetFileVersionAsString().c_str());
143 | }
144 | }
145 | VERIFY(CloseHandle(hProcess));
146 | }
147 | return pProcessData;
148 | }
149 |
150 | CProcessData* CSystemSnapshot::UpdateProcess(DWORD dwProcessID)
151 | {
152 | HANDLE hProcess = nullptr;
153 | PROCESS_MEMORY_COUNTERS pmc = { 0 };
154 | pmc.cb = sizeof(PROCESS_MEMORY_COUNTERS);
155 |
156 | CProcessData* pProcessData = GetProcessID(dwProcessID);
157 | if (pProcessData != nullptr)
158 | {
159 | if ((hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, false, dwProcessID)) != nullptr)
160 | {
161 | pProcessData->SetProcessorUsage(pProcessData->m_pCpuUsage.GetUsage());
162 | if (GetProcessMemoryInfo(hProcess, &pmc, pmc.cb))
163 | {
164 | pProcessData->SetMemoryUsage((DWORD)pmc.WorkingSetSize);
165 | }
166 | VERIFY(CloseHandle(hProcess));
167 | }
168 | return pProcessData;
169 | }
170 | return nullptr;
171 | }
172 |
173 | bool CSystemSnapshot::RemoveProcess(DWORD dwProcessID)
174 | {
175 | const int nSize = (int)m_arrProcessList.GetSize();
176 | for (int nIndex = 0; nIndex < nSize; nIndex++)
177 | {
178 | CProcessData* pProcessData = m_arrProcessList.GetAt(nIndex);
179 | ASSERT(pProcessData != nullptr);
180 | if (pProcessData->GetProcessID() == dwProcessID)
181 | {
182 | delete pProcessData;
183 | pProcessData = nullptr;
184 | m_arrProcessList.RemoveAt(nIndex);
185 | return true;
186 | }
187 | }
188 | return false;
189 | }
190 |
191 | CProcessData* CSystemSnapshot::GetProcessID(DWORD dwProcessID)
192 | {
193 | const int nSize = (int)m_arrProcessList.GetSize();
194 | for (int nIndex = 0; nIndex < nSize; nIndex++)
195 | {
196 | CProcessData* pProcessData = m_arrProcessList.GetAt(nIndex);
197 | ASSERT(pProcessData != nullptr);
198 | if (pProcessData->GetProcessID() == dwProcessID)
199 | {
200 | return pProcessData;
201 | }
202 | }
203 | return nullptr;
204 | }
205 |
--------------------------------------------------------------------------------
/IntelliTask.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IntelliTask - Help
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
37 |
38 |
39 |
40 |
41 |
IntelliTask
42 |
43 |
44 |
Introduction
45 |
IntelliTask is a free (as in “free speech” and also as in “free beer”) process/service manager. Running in the Microsoft Windows environment, its use is governed by GNU General Public License v3.0. IntelliTask is written in C++ and uses pure Win32 API and STL which ensures a higher execution speed and smaller program size. By optimizing as many routines as possible without losing user friendliness, IntelliTask is trying to reduce the world carbon dioxide emissions. When using less CPU power, the PC can throttle down and reduce power consumption, resulting in a greener environment. I hope you enjoy IntelliTask as much as I enjoy coding it!
46 |
47 |
IntelliTask provides information about processes and services running on your computer. It also displays the most commonly used performance measures for processes. You can use IntelliTask to monitor key indicators of your computer’s performance. You can see the status of the programs that are running and end programs that have stopped responding. You can also assess the activity of running processes using as many as fifteen parameters, and see graphs and data on CPU and memory usage. In addition, if you are connected to a network, you can view network status and see how your network is functioning.
48 |
49 |
Getting started
50 |
Install IntelliTask using the installer
51 |
52 |
Download the installer
53 |
Run the executable binary and follow the installation flow
54 |
55 |
The installer will likely require Administrative privileges in order to install IntelliTask (and later, to update IntelliTask or install or update plugins, or anything else that requires writing to the installation directory). If you do not have Administrative privileges, you either need to tell the installer to use a location where you do have write permission (though that may still ask for Administrator privileges), or you may choose not use the installer and instead run a portable edition from a directory where you have write permission.
56 |
Install IntelliTask from zip
57 |
These instructions will allow you to run a portable or mini-portable (also called “minimalist”), without requiring administrative privileges.
58 |
59 |
Create a new folder somewhere that you have write-permission
60 |
Unzip the content into the new folder
61 |
Run IntelliTask from the new folder
62 |
63 |
The portable zip edition of IntelliTask can be removed by deleting the directory they came in. If you manually set up file associations or context-menu entries in the OS, it is your responsibility to remove them yourself.
64 |
65 |
Application's menu
66 |
The IntelliTask menu features the application's most important functions:
As noted in the Contributing Rules for IntelliTask, all Pull Requests need to be attached to a issue on GitHub. So the first step is to create an issue which requests that the functionality be improved (if it was already there) or added (if it was not yet there); in your issue, be sure to explain that you have the functionality definition ready, and will be submitting a Pull Request. The second step is to use the GitHub interface to create the Pull Request from your fork into the main repository. The final step is to wait for and respond to feedback from the developers as needed, until such time as your PR is accepted or rejected.