首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GetProcessesByName不工作

GetProcessesByName不工作
EN

Stack Overflow用户
提问于 2014-06-12 14:53:49
回答 3查看 19.3K关注 0票数 13

在搜索了很多关于这个问题之后,我仍然面临着检查正在运行的进程是否已经结束的问题。当用户点击GUI中的“Go”按钮时,程序将运行约5秒并关闭。当它完成时,我想做一些事情(例如,在GUI中做绿色标记)。

我的问题是“GetProcessesByName”显然看不到程序,这很奇怪,因为我在任务管理器中看到了它。程序名为quartus_pgm.exe。参见以下代码,我尝试过quartus_pgmquartus_pgm.exequartus_pgm.exe32(如任务管理器中所示),但一无所获!

如果我输入'cmd‘,它确实会看到它( quartus_pgm是从cmd中调用的),但它不是我要找的。我尝试过各种方法:

代码语言:javascript
复制
Process[] targetProcess = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(processName));

或者这个:

代码语言:javascript
复制
 Process[] processes = Process.GetProcessesByName("quartus_pgm");
                      if (processes.Length > 0)
                        // do something;

或者这个:

代码语言:javascript
复制
foreach (var process in Process.GetProcessesByName("quartus_pgm.exe"))
                {
                    // do something;
                }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-12 15:00:20

尝试删除.exe部件。

代码语言:javascript
复制
foreach (var process in Process.GetProcessesByName("quartus_pgm"))
{
         // do something;
}

来自here

进程名称是进程的友好名称,不包括.exe扩展名或路径

更新

尝试列出您计算机中的所有进程,查找quartus_pgm进程名称。

代码语言:javascript
复制
 foreach (var process in Process.GetProcesses())
 {
     Console.WriteLine(process.ProcessName);
 }
票数 29
EN

Stack Overflow用户

发布于 2014-06-12 15:08:54

这个方法有没有可能区分大小写?如果你遍历这些过程,你能找到它吗?

代码语言:javascript
复制
foreach (Process p in Process.GetProcesses())
            {
                if (p.ProcessName.ToLower() == "quartus_pgm")
                {

                }
            }
票数 3
EN

Stack Overflow用户

发布于 2014-06-12 15:09:18

既然您已经开始了这个过程,为什么不保留对它的Process引用?然后你就可以这样做

代码语言:javascript
复制
if (process.HasExited) { ... }

(不要忘记您必须调用process.Refresh以确保HasExited属性被正确更新)

或者甚至只是等待它的等待句柄(理想情况下使用异步代码)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24178175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档