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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2008, 17:09   #1
student_63
Пользователь
 
Аватар для student_63
 
Регистрация: 07.11.2007
Сообщений: 92
Лампочка Переформулирую вопрос про время процессов

Извините, что опять лезу со своим вопросом, уже задавал его несколько раз, но все-таки я его переформулировал и вот что мне нужно:

С помощью GetProcessTimes(HandleProc, Start,Exit,KornelTime,UserTime); получаю время процесса. Как мне вывести время создания или время завершения процесса, чтобы пользователь знал работает процесс или нет, т.е., например в ListView'е в поле состояния было написано либо процесс работает, либо его уже нет?
Я уверен, вы согласитесь со мной... что если
со страницей 534 мы встречаемся во второй главе, то первая глава должна быть невыносимо длинной.
- ШЕРЛОК ХОЛМС

Последний раз редактировалось Stilet; 14.04.2008 в 09:32.
student_63 вне форума Ответить с цитированием
Старый 13.04.2008, 18:51   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

При чем тут время?
Почему просто по таймеру, допустим, не обновлять список запущенных процессов? И отслеживать, есть в списке интересующий или нет?
mihali4 вне форума Ответить с цитированием
Старый 13.04.2008, 19:03   #3
student_63
Пользователь
 
Аватар для student_63
 
Регистрация: 07.11.2007
Сообщений: 92
По умолчанию

Да мне протокол надо вывести типа:

Имя, PID, дата, время, Состояние(Завершен или работает). Т.е. время чего завершения или создания. Как я понял из GetProcessTimes либо параметр Exit либо Start
Я уверен, вы согласитесь со мной... что если
со страницей 534 мы встречаемся во второй главе, то первая глава должна быть невыносимо длинной.
- ШЕРЛОК ХОЛМС
student_63 вне форума Ответить с цитированием
Старый 13.04.2008, 19:40   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от student_63 Посмотреть сообщение
Да мне протокол надо вывести типа:

Имя, PID, дата, время, Состояние(Завершен или работает). Т.е. время чего завершения или создания. Как я понял из GetProcessTimes либо параметр Exit либо Start
GetProcessTimes возвращает все четыре времени. Если в искомом процессе была вызвана ExitProcess, значит в ExitTime будет что-то осмысленное, иначе - 1601 год, т.е. нуль, как и полагается. Я Вам в той теме уже приводил часть кода, теперь - ещё больше. Чтобы вести протокол, нужно открывать хэндлы на интересующие процессы, иначе после завершения они улетучатся навсегда. Всё это уже обсуждалось в той теме.

Код:
#include <windows.h>
#include <stdio.h>
int main()
{
	DWORD		dwID = XXXXXXXXXXX;
	FILETIME	ftCreateTime;
	FILETIME	ftKernelTime;
	FILETIME	ftUserTime;
	FILETIME	ftExitTime;

	SYSTEMTIME	tm;

//	dwID = 2352;//GetCurrentProcessId();
	HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwID);
	if(hProcess){
		WaitForSingleObject(hProcess, INFINITE);
		GetProcessTimes(hProcess, &ftCreateTime, &ftExitTime, &ftKernelTime, &ftUserTime);
		CloseHandle(hProcess);

		FileTimeToSystemTime(&ftCreateTime, &tm);
		printf("Created: \t%04dY-%02dM-%02dD %02dh:%02dm:%02d.%06ds\n", 
				tm.wYear, tm.wMonth, tm.wDay, tm.wHour, tm.wMinute, tm.wSecond, tm.wMilliseconds);

		FileTimeToSystemTime(&ftKernelTime, &tm);
		printf("Kernel time: \t%04dY-%02dM-%02dD %02dh:%02dm:%02d.%06ds\n", 
				tm.wYear- 1601, tm.wMonth - 1, tm.wDay - 1, tm.wHour, tm.wMinute, tm.wSecond, tm.wMilliseconds);

		FileTimeToSystemTime(&ftUserTime, &tm);
		printf("User time: \t%04dY-%02dM-%02dD %02dh:%02dm:%02d.%06ds\n", 
				tm.wYear - 1601, tm.wMonth - 1, tm.wDay - 1, tm.wHour, tm.wMinute, tm.wSecond, tm.wMilliseconds);

		FileTimeToSystemTime(&ftExitTime, &tm);
		printf("Exit time: \t%04dY-%02dM-%02dD %02dh:%02dm:%02d.%06ds\n", 
				tm.wYear, tm.wMonth, tm.wDay, tm.wHour, tm.wMinute, tm.wSecond, tm.wMilliseconds);
	}
	return 0;
}
B_N вне форума Ответить с цитированием
Старый 13.04.2008, 20:20   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
иначе - 1601 год, т.е. нуль, как и полагается
Объяснитесь. Нулевая дата соответствует конкретной дате - 30.12.1899...
Откуда средние века?
mihali4 вне форума Ответить с цитированием
Старый 13.04.2008, 20:28   #6
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Объяснитесь. Нулевая дата соответствует конкретной дате - 30.12.1899...
Это в Дельфи. В Windows отсчет ведётся с 1 января 1601 AD.
http://support.microsoft.com/kb/188768
B_N вне форума Ответить с цитированием
Старый 13.04.2008, 22:25   #7
student_63
Пользователь
 
Аватар для student_63
 
Регистрация: 07.11.2007
Сообщений: 92
По умолчанию

Мне же нужно весь список процессов вывести и если я его обновлять буду через таймер у меня же завершенные процессы выводиться не будут, а мне это нужно, чтобы пользователь видел, мол был такой процесс, а сейчас нет его.
Я уверен, вы согласитесь со мной... что если
со страницей 534 мы встречаемся во второй главе, то первая глава должна быть невыносимо длинной.
- ШЕРЛОК ХОЛМС

Последний раз редактировалось Stilet; 14.04.2008 в 10:36.
student_63 вне форума Ответить с цитированием
Старый 14.04.2008, 10:34   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
завершенные процессы выводиться не будут, а мне это нужно, чтобы пользователь видел, мол был такой процесс, а сейчас нет его.
Ведите два списка. Один список у вас будет оперативно обновляемый по таймеру, а в другой (что-то вроде лога процессов) будете заносить вновь запущенные (с указанием времени старта), и те, которые когда-то были запущены, но теперь уже прекратили работу (с указанием времени завершения).
mihali4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Маленький вопрос(дата и время в с++) Goblin Общие вопросы C/C++ 3 27.05.2008 09:30
Блокировка процессов Zeraim Операционные системы общие вопросы 5 17.04.2008 13:02
отключение процессов UROKSAN Win Api 1 10.04.2008 09:08
Память процессов Carbon Безопасность, Шифрование 2 05.05.2007 23:59