[英]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.