Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/64: Рейтинг темы: голосов - 64, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 09.06.2013
Сообщений: 35

Написание диспетчера задач

20.10.2013, 18:49. Показов 13484. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет)поставленная мне задача -> написать диспетчер задач в виде :
Code
1
2
3
procces1  i%
procces2  j%
...
подскажите в какую сторону начинать "копать"?может у кого есть свой личный диспетчер задач?или мож где видали в инете данное решение проблемы))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.10.2013, 18:49
Ответы с готовыми решениями:

Создание собственного диспетчера задач Windows
Столкнулся с проблемой присоединения заголовочного файла «tlhelp32.h» в MS Visual Studio 2010! #pragma once #include...

Написание диспетчера: вывести все текущие приложения
У меня уже есть чать программы, мне нужно в новой вкладке вывести все текущие приложения, какие методы обрабатывать надо?

Разработка Диспетчера задач
Помогите доработать диспетчер задач. Не могу прописать код на вывод обновленного списка запущенных приложений в запущенной программе ,чтоб...

12
87 / 86 / 27
Регистрация: 04.10.2012
Сообщений: 355
21.10.2013, 05:35
Это: http://msdn.microsoft.com/en-u... s.85).aspx?
0
1 / 1 / 0
Регистрация: 09.06.2013
Сообщений: 35
21.10.2013, 19:01  [ТС]
Цитата Сообщение от mytilus Посмотреть сообщение
может чтото и похоже вроде на правду но при компиляции происходят ошибки типа что "Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ _GetModuleBaseNameW@16 в функции "void __cdecl PrintProcessNameAndID(unsigned long)" (?PrintProcessNameAndID@@YAXK@Z)" в файле формата .obj
0
87 / 86 / 27
Регистрация: 04.10.2012
Сообщений: 355
21.10.2013, 21:03
Наверное, Студия не видит реализации этой функции.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
21.10.2013, 23:10
Цитата Сообщение от qwerty1122 Посмотреть сообщение
может чтото и похоже вроде на правду но при компиляции происходят ошибки типа что "Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ _GetModuleBaseNameW@16
А библиотеки то подключил?
Linking problems with PSAPI, despite the functions supposedly being moved to Kernel32.DLL
The #pragma comment(lib, "Psapi.lib"), and copy PSAPI.DLL into your project directory, resolved all the linker problems for me. Win7 64Bit, and the DLL I picked up from an old XP backup. PM me for a copy if you need the DLL.
0
87 / 86 / 27
Регистрация: 04.10.2012
Сообщений: 355
22.10.2013, 12:44
Точно. Я не правильно прочитал ошибку. Добавьте #pragma comment(lib, "psapi.lib") в код.
0
1 / 1 / 0
Регистрация: 09.06.2013
Сообщений: 35
22.10.2013, 13:56  [ТС]
Цитата Сообщение от mytilus Посмотреть сообщение
Точно. Я не правильно прочитал ошибку. Добавьте #pragma comment(lib, "psapi.lib") в код.
да спасибо помогло исправить ошибки,теперь можно посмотреть что делает данная программа)от части да она делает то что необходимо,она получает список запущенных процессов)но вот выдает она их ний PID а необходимо чтобы как в системном диспетчере задач выдавался столбик "ЦП")как можно подправить данный код?
0
87 / 86 / 27
Регистрация: 04.10.2012
Сообщений: 355
22.10.2013, 14:49
Про загрузку ЦП есть здесь: Загрузка ЦП.
0
1 / 1 / 0
Регистрация: 09.06.2013
Сообщений: 35
22.10.2013, 18:00  [ТС]
Цитата Сообщение от mytilus Посмотреть сообщение
Про загрузку ЦП есть здесь: Загрузка ЦП.
при проверке данного кода на Dev Cpp вылазиет данная ошибка "167 D:\qqq\main.cpp [Warning] passing `double' for converting 1 of `char* itoa(int, char*, int)' " т.е ругается на itoa,а при проверке на visual ругается на все что связанно с intapi.h(хотя в инете нашел данный файлик,добавил к себе)
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
22.10.2013, 18:10
Цитата Сообщение от qwerty1122 Посмотреть сообщение
вылазиет данная ошибка "167 D:\qqq\main.cpp [Warning] passing `double' for converting 1 of `char* itoa(int, char*, int)'
это не ошибка а предупреждение
зачем ты дублю применяешь для itoa?
для неё есть ftoa
0
1 / 1 / 0
Регистрация: 09.06.2013
Сообщений: 35
29.10.2013, 15:43  [ТС]
Цитата Сообщение от mytilus Посмотреть сообщение
Про загрузку ЦП есть здесь: Загрузка ЦП.
вот кое какие сведения вывести у меня получилось но все также безрезультатно вывод загруженности ЦП(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
#include <conio.h>
 
int main()
{
    // Делаем "снимок" процессов
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    PROCESSENTRY32 pe;  //хранит информацию о найденом процессе
    if (Process32First(hSnapshot, &pe)) //Поиск первого процесса в снимке
    {
        printf("Name obraz                PID   Kol-vo nitei      Prioritet         PID family");
        printf("========================= ===== ================= ================= ============");
        do  
        {
            if (!pe.th32ProcessID) continue;    // Пропуск [System process]
            HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION |
                                   PROCESS_VM_READ,
                                   FALSE, pe.th32ProcessID);    //Получаем дескриптор процесса
            char cPriority[18];
            switch (GetPriorityClass(hProcess)) //Получае приоритет процесса
            {
                case HIGH_PRIORITY_CLASS:
                    strcpy(cPriority, "Vishe srednego");
                    break;
                case IDLE_PRIORITY_CLASS:
                    strcpy(cPriority, "Nizkii");
                    break;
                case NORMAL_PRIORITY_CLASS:
                    strcpy(cPriority, "Srednii");
                    break;
                case REALTIME_PRIORITY_CLASS:
                    strcpy(cPriority, "Realnogo vremeni");
                    break;
                default:
                    strcpy(cPriority, "Visokii");
            }
            CloseHandle(hProcess);
            //Выводим информацию о процессе
            printf("%25s%6d%18d%18s%12d\n", pe.szExeFile, pe.th32ProcessID,
                   pe.cntThreads, cPriority, pe.th32ParentProcessID);
            
        }
        while (Process32Next(hSnapshot, &pe));  //Поиск следущего процесса в снимке
    }
    else printf("Ne poluchilos' poluchit' informaciu");
    CloseHandle(hSnapshot);
    system("PAUSE");
    return 0;
}
0
1 / 1 / 0
Регистрация: 09.06.2013
Сообщений: 35
29.10.2013, 19:17  [ТС]
ну вдруг я не правильно обьясняюсь,то на данной картинке помеченно что мне необходимо получать(какие столбцы) в результате работы программы
Миниатюры
Написание диспетчера задач  
0
1 / 1 / 0
Регистрация: 09.06.2013
Сообщений: 35
03.11.2013, 18:46  [ТС]
ну вот так маленько продолжил
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
//Менеджер процессов
 
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
#include <conio.h>
 
int main()
{
    // Делаем "снимок" процессов
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    FILETIME ftCreation,
             ftExit,
             ftKernel,
             ftUser;
    PROCESSENTRY32 pe;  //хранит информацию о найденом процессе
    if (Process32First(hSnapshot, &pe)) //Поиск первого процесса в снимке
    {
        printf("Name obraz                PID   Kol-vo nitei      Prioritet         PID family");
        printf("========================= ===== ================= ================= ============");
        do  
        {
            if (!pe.th32ProcessID) continue;    // Пропуск [System process]
            HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION |
                                   PROCESS_VM_READ,
                                   FALSE, pe.th32ProcessID);    //Получаем дескриптор процесса
            GetProcessTimes(hProcess,&ftCreation,&ftExit,&ftKernel,&ftUser);//получаем системные времена процесса
            char cPriority[18];
            switch (GetPriorityClass(hProcess)) //Получаем приоритет процесса
            {
                case HIGH_PRIORITY_CLASS:
                    strcpy(cPriority, "Vishe srednego");
                    break;
                case IDLE_PRIORITY_CLASS:
                    strcpy(cPriority, "Nizkii");
                    break;
                case NORMAL_PRIORITY_CLASS:
                    strcpy(cPriority, "Srednii");
                    break;
                case REALTIME_PRIORITY_CLASS:
                    strcpy(cPriority, "Realnogo vremeni");
                    break;
                default:
                    strcpy(cPriority, "Visokii");
            }
            CloseHandle(hProcess);
            //Выводим информацию о процессе
            printf("%25s%6d%18d%18s%12d\n", pe.szExeFile, pe.th32ProcessID,
                   pe.cntUsage, cPriority, pe.th32ParentProcessID);
            
        }
        while (Process32Next(hSnapshot, &pe));  //Поиск следущего процесса в снимке
    }
    else printf("Ne poluchilos' poluchit' informaciu");
    CloseHandle(hSnapshot);
    system("PAUSE");
    return 0;
    getch();
}                                                                                                                                   //setprocessworkingsetsize (getcurrentprocess, $ffffffff, $ffffffff);
вот я правильно воспользовался GetProcessTimes?т.е теперь мне необходимо взять ftUser и поделить на ftKernel и домножить на 100 чтобы получить загрузку процесса но перед этим "перевести" время?

Добавлено через 3 часа 21 минуту
вот подправил еще свой код,и вроде как мне кажется получилось получить загруженность цп...но не могли бы вы как знатоки оценить верность данного кода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//Менеджер процессов
 
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>
 
using namespace std;
 
int main()
{
    // Делаем "снимок" процессов
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    FILETIME ftCreation,
             ftExit,
             ftKernel,
             ftUser;
    SYSTEMTIME stCreation,
               stExit,
               stKernel,
               stUser;
    PROCESSENTRY32 pe;  //хранит информацию о найденом процессе
    if (Process32First(hSnapshot, &pe)) //Поиск первого процесса в снимке
    {
        printf("Name obraz                PID   Kol-vo nitei      Prioritet         PID family");
        printf("========================= ===== ================= ================= ============");
        do  
        {
            if (!pe.th32ProcessID) continue;    // Пропуск [System process]
            HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION |
                                   PROCESS_VM_READ,
                                   FALSE, pe.th32ProcessID);    //Получаем дескриптор процесса
            GetProcessTimes(hProcess,&ftCreation,&ftExit,&ftKernel,&ftUser);//получаем системные времена процесса
            /////
            FileTimeToSystemTime(&ftCreation, &stCreation);
            FileTimeToSystemTime(&ftExit, &stExit);
            FileTimeToSystemTime(&ftUser, &stUser);
            FileTimeToSystemTime(&ftKernel, &stKernel); 
//            cout<<"creation time   -> "<<stCreation.wHour<<" Hour "<<stCreation.wMinute<<" Min "
//                <<stCreation.wSecond<<" Sec "<<stCreation.wMilliseconds<<" mSec "<<endl; 
            int now=((double)stUser.wHour*3600.0+
                    (double)stUser.wMinute*60.0+
                    (double)stUser.wSecond+
                    (double)stUser.wMilliseconds)/1000.0;
            int noq=((double)stKernel.wHour*3600.0+
                    (double)stKernel.wMinute*60.0+
                    (double)stKernel.wSecond+
                    (double)stKernel.wMilliseconds)/1000.0;
            cout<<"->"<<now<<"  ->"<<noq<<endl;
            //float cpu=(now/noq)*100;
            //cout<<"->"<<cpu<<endl;
            /////
            //int MS = ((*((ULONGLONG*)&ftUser)) / (*((ULONGLONG*)&ftKernel)))*100;
            char cPriority[18];
            switch (GetPriorityClass(hProcess)) //Получаем приоритет процесса
            {
                case HIGH_PRIORITY_CLASS:
                    strcpy(cPriority, "Vishe srednego");
                    break;
                case IDLE_PRIORITY_CLASS:
                    strcpy(cPriority, "Nizkii");
                    break;
                case NORMAL_PRIORITY_CLASS:
                    strcpy(cPriority, "Srednii");
                    break;
                case REALTIME_PRIORITY_CLASS:
                    strcpy(cPriority, "Realnogo vremeni");
                    break;
                default:
                    strcpy(cPriority, "Visokii");
            }
            CloseHandle(hProcess);
            //Выводим информацию о процессе
            printf("%25s%6d%18d%18s%12d\n", pe.szExeFile, pe.th32ProcessID,
                   pe.cntUsage, cPriority, pe.th32ParentProcessID);         
        }
        while (Process32Next(hSnapshot, &pe));  //Поиск следущего процесса в снимке
    }
    else printf("Ne poluchilos' poluchit' informaciu");
    CloseHandle(hSnapshot);
    system("PAUSE");
    return 0;
    getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2013, 18:46
Помогаю со студенческими работами здесь

Блокировка диспетчера задач
как при входе в программу тоисть Form заблокировать диспетчер задач??

Окно диспетчера задач
Всем привет. Я был что-то нажал и случилось страшное(:)), см.скрин, окно стало какое-то не такое, вопрос: как его вернуть к стандартному...

Загруженность диспетчера задач *32
Здравствуйте, после установки приложения cpu_control и последующего её удаления, система перестала нормально работать и в диспетчере задач...

Приоритет диспетчера задач
Во все времена, диспетчер задач использовался, чтобы вытаскивать машину из самых жестких затупов. Как черный плащ - только клики и он...

аналог диспетчера задач
Добрый вечер.Ищу программу (если такая имеется) ,которая является аналогом диспетчера задач,только чтобы сохраняла логи.Допустим я поиграл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru