|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.04.2014, 14:45 | #1 |
Новичок
Джуниор
Регистрация: 10.04.2014
Сообщений: 7
|
переписать программу с С++ на Делфи
#include <iostream>
#include <Windows.h> #include <Psapi.h> __int64 FILETIMEToInt64(FILETIME filetime){ __int64 curTime; curTime = filetime.dwHighDateTime; curTime <<= 32; curTime += filetime.dwLowDateTime; return curTime; } __int64 GetTotalTimeWorkedProcess(){ DWORD processes[1024];//В этом массиве будем хранить список идентификаторов процессов. Делаем его как можно больше, т.к. не знаем сколько реально у нас идентификаторов туда может записаться. DWORD cbNeeded;//Количество байт возвращается в aProcesses. В эту переменную, значение запишет сама функция EnumProcesses. DWORD countProcesses;//Количество процессов __int64 sumlpKernelTime = 0; // время, работы процесса в режиме ядра __int64 sumlpUserTime = 0; // время, работы процесса в режиме пользователя if (!EnumProcesses(processes, sizeof(processes), &cbNeeded)){ std::cout << "Exception in EnumProcesses"; //во время выполнения функции произошла ошибка. } else{ countProcesses = cbNeeded / sizeof(DWORD); //с помощью функции GetProcessTimes замеряем, время, которое процесс провел в пользовательском режиме и режиме ядра, складываем эти показатели for (int i = 0; i < countProcesses; i++) if (processes[i] != 0){ HANDLE currentProcess = OpenProcess(PROCESS_QUERY_INFORMATI ON | PROCESS_VM_READ, FALSE, processes[i]); if (NULL != currentProcess) { FILETIME lpCreationTime, lpExitTime, lpKernelTime, lpUserTime; if (GetProcessTimes(currentProcess, &lpCreationTime, &lpExitTime, &lpKernelTime, &lpUserTime)){ sumlpKernelTime += FILETIMEToInt64(lpKernelTime); sumlpUserTime += FILETIMEToInt64(lpUserTime); } } } } return sumlpKernelTime + sumlpUserTime; } void main(){ SYSTEM_INFO sysinfo; GetSystemInfo(&sysinfo); int countKernels = sysinfo.dwNumberOfProcessors; //Количество ядер процессора //std::cout << "Count process: " << countProcesses << std::endl; //Вычисляем среднее значение загрузки процессора в течени 1 секунды. DWORD timeInterval = 1000; __int64 totalTimeWorkedProcess = GetTotalTimeWorkedProcess(); FILETIME lpSystemTimeAsFileTime; GetSystemTimeAsFileTime(&lpSystemTi meAsFileTime);//Функция GetSystemTimeAsFileTime извлекает дату и время текущей операционной системы __int64 timeStart = FILETIMEToInt64(lpSystemTimeAsFileT ime); Sleep(timeInterval); //Считаем разницу между запросами totalTimeWorkedProcess = GetTotalTimeWorkedProcess() - totalTimeWorkedProcess; GetSystemTimeAsFileTime(&lpSystemTi meAsFileTime); __int64 timeEnd = FILETIMEToInt64(lpSystemTimeAsFileT ime); totalTimeWorkedProcess /= countKernels;//общее время проработанное процессами делим на количество ядер. std::cout << "Percent load process: " << 100 * ((double) totalTimeWorkedProcess / (double) (timeEnd - timeStart)); char Exit_f; std::cin >> Exit_f; } программа должна определеять основные параметры загруженности компьютера |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Переписать программу с C++ на Delphi | karapus | Фриланс | 10 | 13.08.2013 00:02 |
Переписать программу с Delphi на C# | newresident | Фриланс | 4 | 06.05.2013 10:48 |
переписать программу | геннадий522 | Visual C++ | 2 | 18.12.2011 14:46 |
переписать программу | d0nDi | Общие вопросы Delphi | 1 | 06.08.2011 22:55 |
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? | Mclaren | Помощь студентам | 2 | 27.04.2009 22:37 |