我在c#方面有很好的工作经验,但是现在我想开发一个简单的(可能是控制台应用程序)软件,该软件可以检测计算机上开始或结束的进程的名称和时间。
例如(如果我假设我的小应用程序已经在运行),如果用户打开了firefox,则应随时间将firefox.exe插入数据库中;如果用户关闭它,则它也将执行同样的操作。
与上面的相同(如果用户打开记事本),则应插入时间为ans的notepad.exe,依此类推。
我知道如何在数据库中插入值,但是我只需要您的帮助来确定系统上进程或程序的开始或结束。
老实说我以前从未开发过这种应用程序,所以我不知道可以使用控制台应用程序还是需要制作Windows服务应用程序等。
因此,请仅考虑将我视为初学者即可提供您的答案。
在C#中,我能够理解它,因此需要担心。
我正在使用Visual Studio 2010和.net 4.0
-提前致谢
为此,不进行轮询就需要WMI。.net对此提供了很好的支持,您可以使用ManagementEventWatcher该类来订阅WMI通知。
ManagementEventWatcher
这篇代码项目文章说明了如何完成它。以下摘录显示了它的直接性。
notePad = new ProcessInfo("notepad.exe"); notePad.Started += new Win32Process.ProcessInfo.StartedEventHandler(this.NotepadStarted); notePad.Terminated += new Win32Process.ProcessInfo.TerminatedEventHandler(this.NotepadTerminated);
请注意,这ProcessInfo是该文章所附代码中实现的类。
ProcessInfo