假设您的计算机在任务管理器上运行了多个EXCEL.EXE。
如何查找上次打开的EXCEL.EXE开放时间?
以下代码不是okey因为每个循环都不遵循EXCEL.EXE开放顺序!
For Each prog As Process In System.Diagnostics.Process.GetProcessesByName("EXCEL")
Label1.Text = prog.StartTime.ToString
Next
答案 0 :(得分:1)
这样的东西可以获得最老的运行实例。
Dim oldestStartTime as DateTime = DateTime.Now
Dim oldestProg as Process
For Each prog As Process In System.Diagnostics.Process.GetProcessesByName("EXCEL")
If prog.StartTime < oldestStartTime Then
oldestStartTime = prog.StartTime
oldestProg = prog
End If
Next
答案 1 :(得分:0)
这是一个LINQ查询,用于查找最后/最近打开的Excel实例:
Dim latest = (
From p In System.Diagnostics.Process.GetProcessesByName("EXCEL")
Order By p.StartTime Descending
).FirstOrDefault()
If latest IsNot Nothing Then
Label1.Text = latest.StartTime.ToString()
End If
您可以删除Descending
以获取第一个/最早开放的实例。
不如循环效率高,因为它必须对进程进行排序。 MoreLINQ有一个更好的MaxBy
方法:
Dim latest = System.Diagnostics.Process.GetProcessesByName("EXCEL") _
.MaxBy(Function(p) p.StartTime)