Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Диспетчер задач

85K
23 декабря 2018 года
My name is Butcher
6 / / 12.12.2018
Есть диспетчер задач значит, есть функции "список запущенных процессов", "изменение приоритета выбранного процесса", как узнать сколько выделено памяти для запущенных процессов и как написать остановку и возобновление процесса?
собственно, код:
Код:
#include "pch.h"
#include <windows.h>
#include <tlhelp32.h>
#include <tchar.h>
#include <iostream>

using namespace std;

// Forward declarations:
BOOL GetProcessList();
void printError(TCHAR* msg);
int main(void)
{
    setlocale(LC_ALL, "rus");
    int q = 1, i = 0, r = 0;
    char IdPr[5];

    GetProcessList();
    cerr << endl;

    while (q)
    {

        cout << "1-завершение процесса " << endl;
        cout << "2-понижение приоретета" << endl;
        cout << "0-выход" << endl;
        cin >> i;
        if (i < 4)
            switch (i)
            {
            case 1:
                HANDLE hProcess;
                BOOL pid;
                cerr << "Введите ID Процеса 4тобы убить" << endl << endl;
                    IdPr[0] = 0;
                cin >> pid;


                hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);

                TerminateProcess(hProcess, NO_ERROR);

                CloseHandle(hProcess);
                break;
            case 2:
            {
                HANDLE tProcess;

                cout << "1-Процесс реального времени " << endl;
                cout << "2-Процесс высокий " << endl;
                cout << "3-Процесс выше среднего " << endl;
                cout << "4-Процесс средний " << endl;
                cout << "5-Процесс ниже среднего" << endl;
                cout << "6-Процесс низкий" << endl;


                cin >> i;
                if (i < 7)
                    switch (i)
                    {
                    case 1:
                    {
                        cerr << "Введите ID Процеса стобы изменить приоретет до реального времени" <<endl;
                        IdPr[0] = 0;
                        cin >> pid;
                        tProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
                        SetPriorityClass(tProcess, REALTIME_PRIORITY_CLASS);
                        CloseHandle(tProcess);
                        break;
                    }
                    case 2:
                    {
                        cerr << "Введите ID Процеса стобы изменить приоретет до вышеприорететного" << endl;
                        IdPr[0] = 0;
                        cin >> pid;
                        tProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
                        SetPriorityClass(tProcess, HIGH_PRIORITY_CLASS);
                        CloseHandle(tProcess);
                        break;
                    }
                    case 3:
                    {
                        cerr << "Введите ID Процеса стобы изменить приоретет до выше нормального"  << endl;
                            IdPr[0] = 0;
                        cin >> pid;
                        tProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
                        SetPriorityClass(tProcess, ABOVE_NORMAL_PRIORITY_CLASS);
                        CloseHandle(tProcess);
                        break;
                    }
                    case 4:
                    {
                        cerr << "Введите ID Процеса стобы изменить приоретет до нормального" << endl ;
                        IdPr[0] = 0;
                        cin >> pid;
                        tProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
                        SetPriorityClass(tProcess, NORMAL_PRIORITY_CLASS
                        );
                        CloseHandle(tProcess);
                        break;
                    }
                    case 5:
                    {
                        cerr << "Введите ID Процеса стобы изменить приоретет до ниже нормального" << endl;
                        IdPr[0] = 0;
                        cin >> pid;
                        tProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
                        SetPriorityClass(tProcess, BELOW_NORMAL_PRIORITY_CLASS);
                        CloseHandle(tProcess);
                        break;
                    }
                    case 6:
                    {
                        cerr << "Введите ID Процеса стобы изменить приоретет до ниже нормального" << endl;
                        IdPr[0] = 0;
                        cin >> pid;
                        tProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
                        SetPriorityClass(tProcess, IDLE_PRIORITY_CLASS);
                        CloseHandle(tProcess);
                        break;
                    }

                    break;
                    }
            }
            case 0:
                cerr << "Выход"  << endl;
                q = 0;
                system("pause");
                system("cls");
                break;
            }
    }
}

BOOL GetProcessList()
{
    HANDLE hProcessSnap;
    HANDLE hProcess;
    PROCESSENTRY32 pe32;
    DWORD dwPriorityClass;

    // снимок всех процесссов в системе
    hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hProcessSnap == INVALID_HANDLE_VALUE)
    {
        printError(TEXT("CreateToolhelp32Snapshot of processes"));
        return(FALSE);
    }

    // Установить размер структуры перед ее использованием
    pe32.dwSize = sizeof(PROCESSENTRY32);

    // Получить информацию о первом процессе,
    // И выход в случае неудачи
    if (!Process32First(hProcessSnap, &pe32))
    {
        printError(TEXT("Process32First")); // Показать причину сбоя
        CloseHandle(hProcessSnap); // очистить объект снимка
        return(FALSE);
    }

    // Пройдитесь снимок процессов, и
    // вывод

    //Информация о каждом процессе в свою очередь;
    do
    {
        _tprintf(TEXT("nИмя процесса: %s"), pe32.szExeFile);

        // Получить класс приоритета
        dwPriorityClass = 0;
        hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);

        cerr << "n ID процесса =t" << pe32.th32ProcessID;
        cerr << "n ID родительского процессa =t" << pe32.th32ParentProcessID;
        cerr << "n Данные приоретета =t" << pe32.pcPriClassBase;

        // List the modules and threads associated with this
        cerr << "n=============================================================";
        Sleep(150);
    } while (Process32Next(hProcessSnap, &pe32));

    CloseHandle(hProcessSnap);
    return(TRUE);
}


void printError(TCHAR* msg)
{
    DWORD eNum;
    TCHAR sysMsg[256];
    TCHAR* p;

    eNum = GetLastError();
    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL, eNum,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
        sysMsg, 256, NULL);

    // Trim the end of the line and terminate it with a null
    p = sysMsg;
    while ((*p > 31) || (*p == 9))
        ++p;
    do { *p = 0; } while ((p >= sysMsg) &&
        ((*p == '.') || (*p < 33)));

    // Display the message
    _tprintf(TEXT("n WARNING: %s failed with error %d (%s)"), msg, eNum, sysMsg);
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог