Как определить начало и конец процесса с использованием С# в окнах?
У меня хороший опыт работы с С#, но теперь я хочу разработать простое (может быть консольное приложение) программное обеспечение, которое просто определяет имя и время процесса, запущенного или завершенного на моем компьютере.
например (я предполагаю, что мое маленькое приложение уже запущено), если пользователь открывает firefox, тогда он должен просто вставить firefox.exe в базу данных со временем, и если пользователь закроет его, то он также сделает то же самое.
и то же, что и выше, если пользователь открывает блокнот, тогда он должен вставить notepad.exe с временем и так далее.
Я знаю, как вставлять значения в базу данных, но мне просто нужна ваша помощь в определении начала/конца процесса/программы в моей системе.
честно говоря, я никогда не разрабатывал такое приложение раньше, поэтому я не знаю, что это возможно с помощью консольного приложения, или мне нужно сделать приложение для Windows и т.д.
поэтому, пожалуйста, предоставьте свой ответ, рассматривая меня как новичок.
в части С# я могу понять это, поэтому вам нужно беспокоиться об этом.
Я использую visual studio 2010 с .net 4.0
-Спасибо заранее
Ответы
Ответ 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
- это класс, реализованный в коде, прикрепленном к этой статье.