Подтвердить что ты не робот

Как определить начало и конец процесса с использованием С# в окнах?

У меня хороший опыт работы с С#, но теперь я хочу разработать простое (может быть консольное приложение) программное обеспечение, которое просто определяет имя и время процесса, запущенного или завершенного на моем компьютере.

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

и то же, что и выше, если пользователь открывает блокнот, тогда он должен вставить notepad.exe с временем и так далее.

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

честно говоря, я никогда не разрабатывал такое приложение раньше, поэтому я не знаю, что это возможно с помощью консольного приложения, или мне нужно сделать приложение для Windows и т.д.

поэтому, пожалуйста, предоставьте свой ответ, рассматривая меня как новичок.

в части С# я могу понять это, поэтому вам нужно беспокоиться об этом.

Я использую visual studio 2010 с .net 4.0

-Спасибо заранее

4b9b3361

Ответ 1

Для этого без опроса требуется WMI. Это хорошо поддерживается в .net, и вы можете использовать класс ManagementEventWatcher для подписки на уведомления WMI.

Эта статья проекта кода иллюстрирует, как это делается. Здесь выдержка, показывающая, насколько она проста.

notePad = new ProcessInfo("notepad.exe");
notePad.Started +=
    new Win32Process.ProcessInfo.StartedEventHandler(this.NotepadStarted);
notePad.Terminated +=
    new Win32Process.ProcessInfo.TerminatedEventHandler(this.NotepadTerminated);

Обратите внимание, что ProcessInfo - это класс, реализованный в коде, прикрепленном к этой статье.