我有一个函数可以检查给定的进程是否正在运行,并且除了该进程打开工具提示的时候它才有效。如果进程确实打开了工具提示,那么此函数返回false,我似乎无法找出问题。
public static bool isRunning(string progName, bool isId, int id)
{
foreach (Process pro in Process.GetProcesses("."))
if (isId)
{
if (pro.Id == id)
return true;
}
else
{
if (pro.ProcessName == progName)
return true;
}
return false;
}
调用此函数的一个示例 - isRunning(" chrome.exe",false,-1)或 isRunning("",true,248 )。 有什么我做错了或我需要检查的其他东西吗?
以下是该文件的完整代码:http://ideone.com/9CUJ5V
编辑:我部分解决了我的问题。我补充说:
foreach(Process pro in Process.GetProcessesByName(progName)){
if(pro.MainWindowHandle != (IntPtr)0)
return true;
根据Process.MainWindowHandle上的msdn文档,如果它没有图形界面,它将返回零。
但是下一个问题是,例如,如果我将蒸汽最小化到任务栏(因此没有窗口实际可见),它将返回true。