簡體   English   中英

如果啟動了新進程(應用程序!),如何捕獲事件?

[英]How to capture the event if a new process (application!) is started?

我想有一些事件處理程序,如果啟動了新的應用程序,則會引發該事件處理程序。 我聽說可以通過使用鈎子來實現,但是我只能找到基於鼠標/鍵盤事件的示例。

如何在C#中創建此類鈎子的示例鏈接是什么?

哦,順便說一句:不,我不想使用WMI ,它也可以是一種解決方案,但在我看來,這不是一個選擇。

您可以使用一種絕妙的解決方案,即對系統中的進程進行輪詢。

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;
}

如果您的應用程序不需要很高的精度,則可以在兩次輪詢之間設置較大的睡眠時間,這樣可以減少耗時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM