Как захватить событие, если новый процесс (приложение!) Запущен? - PullRequest
1 голос
/ 06 мая 2010

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

Что такое пример ссылки о том, как я могу создать такой хук в C #?

Да, и кстати: Нет, я не хочу использовать WMI , который также может быть решением, но в моем случае это не вариант.

1 Ответ

0 голосов
/ 06 мая 2010

Вы можете использовать далеко не элегантное решение, которое выполняет опрос процессов в системе.

Process[] currentProcessList = Process.GetProcesses();

List<Process> newlyAddedProcesses = new List<Process>();
while (true)
{
    newlyAddedProcesses.Clear();
    Process[] newProcessList = Process.GetProcesses();

    foreach (Process p in newProcessList)
    {
        if (!currentProcessList.Contains(p))
        {
            newlyAddedProcesses.Add(p);
        }
    }

    //TODO: do your work with newlyAddedProcesses

    System.Threading.Thread.Sleep(500);
    currentProcessList = newProcessList;
}

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

...