我有一个很好的c#工作经验,但现在我想开发一个简单的(可能是一个控制台应用程序)软件,它只检测我的计算机上开始或结束的进程的名称和时间。
例如(我假设我的小应用程序已在运行)如果用户打开firefox然后它应该只是将firefox.exe随时间插入数据库中,如果用户关闭它,那么它也会这样做。
和上面相同,如果用户打开记事本,那么它应该插入带有时间的notepad.exe等。
我知道如何在数据库中插入值,但我只需要你帮助识别我的系统上的进程/程序开始或结束。
老实说我之前从未开发过这种应用程序,所以我不知道可以使用控制台应用程序,或者我需要制作一个Windows服务应用程序等。所以请在考虑我作为初学者的时候提供你的答案。
在c#的部分我能够理解它,所以需要担心。
我正在使用带有.net 4.0的visual studio 2010
- 提前谢谢
答案 0 :(得分:20)
在没有轮询的情况下执行此操作需要WMI。这在.net中得到很好的支持,您可以使用ManagementEventWatcher
类来订阅WMI通知。
这个Code Project article说明了它是如何完成的。这是一个摘录,显示它是多么简单。
notePad = new ProcessInfo("notepad.exe");
notePad.Started +=
new Win32Process.ProcessInfo.StartedEventHandler(this.NotepadStarted);
notePad.Terminated +=
new Win32Process.ProcessInfo.TerminatedEventHandler(this.NotepadTerminated);
请注意,ProcessInfo
是在该文章附带的代码中实现的类。