跟踪其他应用程序的运行时间

本文关键字:运行时间 应用程序 其他 跟踪 | 更新日期: 2024-10-31 13:10:20

我正在考虑构建一个应用程序来记录程序/应用程序在整个正常运行时间内在Windows机器上运行了多长时间。

该应用程序将在Windows登录时启动,并从那里通过收集开始和结束时间来记录所有程序使用时间。

我正在寻找一种替代方法,最好是事件驱动来捕获程序开始时间和结束时间而不轮询 WMI,因为对于我需要的小信息来说,它似乎确实占用了 CPU。

如果有人知道我可以使用哪些其他方法来捕获进程的开始和结束时间,请提出您的想法。

找到这个主题,它使用 WMI,但似乎是相当事件驱动的,我会尝试一下并报告我关于性能的发现如何监控应用程序是否已打开?

跟踪其他应用程序的运行时间

您可以使用

Process.GetProcesses()获取所有正在运行的进程,然后注册到那里的退出事件:

    static void Main(string[] args)
    {
        var p = Process.GetProcesses();
        foreach (var process in p)
        {
            try
            {
                // you can add the process to your process list, chack existence and etc...
                process.EnableRaisingEvents = true;
                process.Exited += Program_Exited;
            }
            catch (Exception)
            {
                //any process that you don't have credantial will throw exception...
            }
        }
        Console.ReadLine();
    }
    private static void Program_Exited(object sender, EventArgs e)
    {
        var process = (Process) sender;
        var startTime = process.StartTime;
        var endTime = process.ExitTime;

    }

现在您所要做的就是管理进程列表....