问题是这样的:
1.通过Process的GetProcess()方法,可以获得所有进程的名字,那我能不能启动某个进程(我使用Process.Start(),可是它说要指定文件路径)
2,应用,比方说有一个窗体form1,我点击它的exe可执行文件时打开它,再次点击exe文件时打开已经存在的form1窗体,而不启动新的。
就像千千静听一样,单击一次时,打开它的窗体,再次打开时,它就打开已经存在的.

解决方案 »

  1.   

    可以启动某个进程,必须知道他的路径。
    Process [] localByName = Process.GetProcessesByName("ProcessName");
    判断一下进程存在不存在,存在当然就不让启动新的。
      

  2.   

    知道路径启动程序的方法我会,可是我现在要实现的是启动在进程表里的某个进程,我想,windows知道它的进程在哪里吧?
    现在的问题:怎样知道在进程表里的进程的执行路径?
      

  3.   

    1. Process p = new Process(ps);
     p.StartInfo.FileName = @"c:\windows\system32\regedit.exe";
     p.Start();2.这个应该要设置你的form1属性,使其不能创建多个实例。FormLoad方法中要多些处理,比如判断当前系统中是否已有该进程等。
      

  4.   

    例一个程序不能运行两次,这个我会(使用Mutex类即可),但是千千静听的效果是:当有一个实例运行的时候,再次打开exe时,它就打开已经存在的实例,要知道,这已经不是一个程序了,这是在另一个程序中启动一个程序,,并且这个程序的路径它还不知道,只知道它的源码(就是它自己)
      

  5.   

    这个也是可以的List<string> fileName=new List<string>();
    Process[] ps = Process.GetProcesses();
    foreach(Process p in ps )
    fileName.Add(p.MainModule.FileName());
      

  6.   

    看下MSDN一下就明白了,还有相关的例子;