一尘不染

如何在Windows中使用C#检测进程的开始和结束?

c#

我在c#方面有很好的工作经验,但是现在我想开发一个简单的(可能是控制台应用程序)软件,该软件可以检测计算机上开始或结束的进程的名称和时间。

例如(如果我假设我的小应用程序已经在运行),如果用户打开了firefox,则应随时间将firefox.exe插入数据库中;如果用户关闭它,则它也将执行同样的操作。

与上面的相同(如果用户打开记​​事本),则应插入时间为ans的​​notepad.exe,依此类推。

我知道如何在数据库中插入值,但是我只需要您的帮助来确定系统上进程或程序的开始或结束。

老实说我以前从未开发过这种应用程序,所以我不知道可以使用控制台应用程序还是需要制作Windows服务应用程序等。

因此,请仅考虑将我视为初学者即可提供您的答案。

在C#中,我能够理解它,因此需要担心。

我正在使用Visual Studio 2010和.net 4.0

-提前致谢


阅读 404

收藏
2020-05-19

共1个答案

一尘不染

为此,不进行轮询就需要WMI。.net对此提供了很好的支持,您可以使用ManagementEventWatcher该类来订阅WMI通知。

这篇代码项目文章说明了如何完成它。以下摘录显示了它的直接性。

notePad = new ProcessInfo("notepad.exe");
notePad.Started +=
    new Win32Process.ProcessInfo.StartedEventHandler(this.NotepadStarted);
notePad.Terminated +=
    new Win32Process.ProcessInfo.TerminatedEventHandler(this.NotepadTerminated);

请注意,这ProcessInfo是该文章所附代码中实现的类。

2020-05-19