目的:某一个程序打开多个进程,我想对这个程序的多个进程分别进行处理(是进程不是线程)现在所知道的手段:通过GetProcessesByName 将该程序打开的所有进程放入一个数组,返回值都是一些PID,不适合人工进行判断需要解决的困难:如何依据所获得的PID得到改进程窗体的名字?????下面举例说明:打开多个记事本文档(测试1.txt、测试2.txt、测试3.txt、测试4.txt。。)窗体名字分别为(测试1.txt-记事本、测试2.txt-记事本、测试3.txt-记事本、测试4.txt-记事本。。)

解决方案 »

  1.   

    枚举这些进程,通过这些Process的MainWindowTitle获取该进程的主窗口标题。
      

  2.   

    Process进程类提供了一个MainWindowTitle 属性 :
    仅当进程有图形界面时,该进程才具有与其关联的主窗口。如果关联进程没有主窗口(因而 MainWindowHandle 为零),则 MainWindowTitle 为空字符串 ("")。如果刚启动了一个进程,并且想使用其主窗口标题,则请考虑使用 WaitForInputIdle 方法让进程完成启动,从而确保创建了主窗口句柄。否则,系统将引发异常。

      

  3.   

                Process[] processes = Process.GetProcesses();
                Process process = null;
                foreach (Process p in processes)
                {
                    //根据   p.MainWindowTitle进行处理
                }