Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2013, 18:50   #1
-=Andriushka=-
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 91
По умолчанию диспетчер задач

всем привет)поставленная мне задача -> написать диспетчер задач в виде :
Код:
procces1  i%
procces2  j%
...
подскажите в какую сторону начинать "копать"?может у кого есть свой личный диспетчер задач?или мож где видали в инете данное решение проблемы))
-=Andriushka=- вне форума Ответить с цитированием
Старый 21.10.2013, 06:50   #2
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 29.10.2013, 18:50   #3
-=Andriushka=-
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 91
По умолчанию

Цитата:
Сообщение от Ezhik Kihze Посмотреть сообщение
кое какие данные смог вывести,но вот не пойму какой функцией вывести именно проценты загруженности ЦП,подскажи функции)
Код:
#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;
}
-=Andriushka=- вне форума Ответить с цитированием
Старый 29.10.2013, 19:19   #4
-=Andriushka=-
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 91
По умолчанию

ну вдруг я не правильно обьясняюсь,то на данной картинке помеченно что мне необходимо получать(какие столбцы) в результате работы программы
Изображения
Тип файла: jpg Безымянный.JPG (43.7 Кб, 234 просмотров)
-=Andriushka=- вне форума Ответить с цитированием
Старый 29.10.2013, 20:25   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Для загрузки проца смотрите GetSystemTimes() и GetProcessTimes()
waleri вне форума Ответить с цитированием
Старый 03.11.2013, 15:26   #6
-=Andriushka=-
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 91
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Для загрузки проца смотрите GetSystemTimes() и GetProcessTimes()
ну вот так маленько продолжил
Код:
//Менеджер процессов

#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 чтобы получить загрузку процесса но перед этим "перевести" время?
-=Andriushka=- вне форума Ответить с цитированием
Старый 03.11.2013, 18:48   #7
-=Andriushka=-
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 91
По умолчанию

вот подправил еще свой код,и вроде как мне кажется получилось получить загруженность цп...но не могли бы вы как знатоки оценить верность данного кода
Код:
//Менеджер процессов

#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();
}
-=Andriushka=- вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Диспетчер задач Alexander1205 Win Api 0 26.10.2011 22:40
диспетчер задач FIST-FROSCH Операционные системы общие вопросы 5 16.07.2010 11:49
Диспетчер задач NecRoMat Свободное общение 2 03.08.2008 16:55
диспетчер задач Istergul Общие вопросы Delphi 3 10.02.2008 00:23