Как определить начало и конец процесса с помощью C # в Windows? - PullRequest
15 голосов
/ 10 декабря 2011

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

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

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

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

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

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

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

Я использую Visual Studio 2010 с .net 4.0

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

1 Ответ

20 голосов
/ 10 декабря 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...