检查任务何时开始/关闭
Check when task starts / shuts down
我想知道如何从任务管理器中读取任务是否已启动/已关闭。我的想法是,我有一个循环,它不断检查新任务是否已经开始,并在任务管理器中搜索特定的字符串。虽然这是可能的,但我真的不想使用那个方法,因为它会 "eat" 很多性能,我想所以我想问一下,如果你有办法检查,如果一个程序有启动/关闭。我是这样想的:
while(!"notepad.exe found")
{
SearchForTask("notepad.exe");
if(notepad.exe found)
//Do Something
}
如果有其他方法,请告诉我。
此致
检查 运行 过程很简单:
if(Process.GetProcessesByName("notepad").Length == 0)
{
// "notepad" not running
} else {
// At least one "notepad" process is running
}
您还可以检查 Length
是否大于零,或者存储上次检查时 运行 处理的数量,看看它是否不同(如果小于上次数量,一个的进程关闭,如果更多,一个启动),因为你实际上可以有多个 "notepad" 运行.
这使用 "friendly name"(通常是没有 exe
或路径的可执行文件名称),如果您对具有非常特定路径的非常特定的进程感兴趣,那么您需要遍历 GetProcessesByName
returns.
的数组
如果你在循环中这样做,我会在循环中留出一些空闲时间,这样你就不会经常检查(这取决于你在做什么),否则你可以使用一个计时器(许多可用计时器之一)并每 'n' 毫秒轮询一次。
我想知道如何从任务管理器中读取任务是否已启动/已关闭。我的想法是,我有一个循环,它不断检查新任务是否已经开始,并在任务管理器中搜索特定的字符串。虽然这是可能的,但我真的不想使用那个方法,因为它会 "eat" 很多性能,我想所以我想问一下,如果你有办法检查,如果一个程序有启动/关闭。我是这样想的:
while(!"notepad.exe found")
{
SearchForTask("notepad.exe");
if(notepad.exe found)
//Do Something
}
如果有其他方法,请告诉我。
此致
检查 运行 过程很简单:
if(Process.GetProcessesByName("notepad").Length == 0)
{
// "notepad" not running
} else {
// At least one "notepad" process is running
}
您还可以检查 Length
是否大于零,或者存储上次检查时 运行 处理的数量,看看它是否不同(如果小于上次数量,一个的进程关闭,如果更多,一个启动),因为你实际上可以有多个 "notepad" 运行.
这使用 "friendly name"(通常是没有 exe
或路径的可执行文件名称),如果您对具有非常特定路径的非常特定的进程感兴趣,那么您需要遍历 GetProcessesByName
returns.
如果你在循环中这样做,我会在循环中留出一些空闲时间,这样你就不会经常检查(这取决于你在做什么),否则你可以使用一个计时器(许多可用计时器之一)并每 'n' 毫秒轮询一次。