为什么在向dataGridView1添加进程时我只看到9个进程?

时间:2014-06-05 06:55:45

标签: c# .net winforms

当我运行Windows rask管理器时,我看到很多进程/应用程序。 但在我的节目中我只看到了9。

void PopulateApplications()
        {
            dataGridView1.Rows.Clear();           
            foreach (Process p in Process.GetProcesses())
            {
                if (p.MainWindowTitle.Length > 1)
                {
                    var icon = Icon.ExtractAssociatedIcon(p.MainModule.FileName);
                    ima = icon.ToBitmap();
                    ima = resizeImage(ima, new Size(25, 25));
                    ima.Save(@"c:\temp\ima.jpg");
                    String status = p.Responding ? "Running" : "Not Responding";
                    dataGridView1.Rows.Add(ima,p.ProcessName, status);
                    DoubleBuffered1(dataGridView1, true);
                }
            }
            firsttime += 1;
            if (firsttime == 1)
            {
                NumberOfRows = dataGridView1.Rows.Count;
            }
            if (NumberOfRows != dataGridView1.Rows.Count)
            {
                int diff = dataGridView1.Rows.Count - NumberOfRows;
                this.Height = this.Height + (ROW_SIZE * diff);
                NumberOfRows = dataGridView1.Rows.Count;
            }

        }

我遍历流程并为每个流程添加一行及其图标。 但我在dataGridView1中只看到了9个进程。

如何将所有进程/应用程序添加到dataGridView1行,就像在任务管理器中一样? 我怎样才能找到系统总是运行的那些我无法关闭但正在运行的流程列表?

1 个答案:

答案 0 :(得分:1)

由于许多进程是后台进程/运行时没有附加任何Window,因此MainWindowTitle将为空(string.Empty为正确),并且您的测试if (p.MainWindowTitle.Length > 1)将返回{{1对于所有这些过程。

MSDN说:

  

如果关联的进程没有主窗口(以便MainWindowHandle为零),则MainWindowTitle为空字符串("")。