C#编程中如何获取与另一个进程关联的应用程序文件名呢?

解决方案 »

  1.   

    用Process.GetProcesses返回系统中所有进程的Process对象数组,然后再操作每一个Process对象来获得起主模块和窗口句柄。Process[] procs = Process.GetProcesses();
    int len = procs.GetLength(0);
    for (int i=0; i<len; i++) {
      Process p = procs[i];
      if (p.Id!=0) {
        int hwnd = p.MainWindowHandle.ToInt32();
        if (hwnd!=0) { // 如果有主窗口
          ProcessModule pm = p.MainModule;
          String modname = pm.ModuleName;
          ……
        }
      }
    }p.MainModule是主模块(EXE),用p.Modules来获取全部模块,它是一个ProcessModuleCollection,p.MainWindowHandle是主窗口句柄。