Я хочу, чтобы мой callbackMethod()
запускался всякий раз, когда создается определенный новый внешний процесс.
Я смотрел на API WMI, я в какой-то степени читал, что могу прикрепить обработчик событий всякий раз, когда процесс запускается.
Я просмотрел этот ответ: Есть ли системное событие, когда процессы созданы? И создал этот код:
public static void setupMonitor()
{
ManagementEventWatcher startWatch = new ManagementEventWatcher(new
WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace"));
startWatch.EventArrived += new EventArrivedEventHandler(callBack);
startWatch.Start();
}
public static void callBack(object sender, EventArrivedEventArgs e)
{
int id = Convert.ToInt32(e.NewEvent.Properties["ProcessID"].Value);
Process started = Process.GetProcessById(id);
}
Как я могу получить новый процесс и назначить его объекту С# Process
?
Я хочу знать, отправляет ли этот метод событие, если процесс создан как «приостановленный»?
Или мне нужно использовать другой запрос
Всем спасибо
seen the windows API - Win32_ProcessStartTrace
- это не WinAPI, это класс WMI.would importing Win32_ProcessStartTrace directly be more efficient
- вы уже используете его, что вы подразумеваете подimporting
? Кроме того, вы взглянули на заголовок stackoverflow.com/questions/22131316/ - person Eugene Podskal   schedule 21.01.2017What I want to know is does this method also send an event if a process created as 'suspended'?
- похоже, что на этот счет нет документации. Вам, вероятно, придется создать приостановленный процесс и проверить, обнаружен он или нет. Очевидно, что существует риск того, что даже если он работает на одной версии ОС, он может не работать на более старой или новой версии, но если предположить, что это не критическое для системы приложение и что запущено очень мало процессов, это может не быть проблемой. - person Eugene Podskal   schedule 22.01.2017Process.GetProcessById(id)
не работает при приостановке??? Или я что-то не так делаю - person Zeller33   schedule 22.01.2017