Windows新事件添加到内存中的事件

新的应用程序被添加到内存/任务栏时,有没有办法获得一些Windows事件
我可以通过遍历Process.GetProcesses()来运行应用程序(虽然,由于某种原因,explorer进程将被排除),但这意味着我必须每隔几秒检查一次新进程,这不是很好。
我想知道是否有任何中断,我可以在C#应用程序中接收,然后调用函数来读取进程?

任何代码示例将是伟大的。
谢谢。

当一个新的进程被创建时,WMI事件可以提醒你。 根据事件你可能不得不轮询。 使用Win32_ProcessStartTrace类,您不必轮询。 在您的代码中发生新事件作为事件引发。 下面是一个例子(在您的项目中添加System.Management作为参考)

public System.Management.ManagementEventWatcher mgmtWtch; private delegate void ListBoxItemAdd(string Item); public Form1() { InitializeComponent(); mgmtWtch = new System.Management.ManagementEventWatcher("Select * From Win32_ProcessStartTrace"); mgmtWtch.EventArrived += new System.Management.EventArrivedEventHandler(mgmtWtch_EventArrived); mgmtWtch.Start(); } void AddItem(string Item) { if (lwProcesses.InvokeRequired) lwProcesses.Invoke(new ListBoxItemAdd(AddItem), Item); else lwProcesses.Items.Add(Item); } void mgmtWtch_EventArrived(object sender, System.Management.EventArrivedEventArgs e) { //MessageBox.Show((string)e.NewEvent["ProcessName"]); foreach (Process p in Process.GetProcesses(".")) { string Title = p.MainWindowTitle; if (Title.Length > 0) AddItem(Title); } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { mgmtWtch.Stop(); } 

WMI是一种方法。 如果不是通过P / invoke修改代码到C#中,

http://www.codeproject.com/KB/threads/procmon.aspx

祝你好运。

当然,(不需要WMI),只需使用本地创建事件)

这可能有帮助。 由于tnis涉及在NT级别(NtCreateFile()和NtOpenFile()或NtCreateSection())挂钩,我怀疑托管C ++的路要走。