System.Diagnostics.Process[] mProcs=
System.Diagnostics.Process.GetProcesses();
foreach(System.Diagnostics.Process sProc in mProcs)
{
if(sProc.ProcessName=="A.exe")
{
MessageBox.Show("Yes"); 
}
}

解决方案 »

  1.   

    但是这样的方法不能避免修改程序名的情况
    一般都用Findwindow来找
      

  2.   

    就是,如果是只想运行同一个程序的一个实例,就用mutex,
    如果要检测另外的程序是否运行,就只有findwindow啦
      

  3.   

    如果另外的程序是一个服务,findwindow 还是麻烦点,应该有一种全局的标志,这个程序设置了,在另外一个程序可以获得,以前好像用 Atom 可以做到,不知道有没有什么其它好办法。
      

  4.   

    string mutexName = "Test.SingleInstance";
    using(Mutex instanceMutex = new Mutex(false, mutexName))
    {
    if(instanceMutex.WaitOne(1, true) == false)
    {

    MessageBox.Show("有一个程序已经运行!", "信息提示", MessageBoxButtons.OK,
    MessageBoxIcon.Information);
    return;
    }
    else
    {
    }
    }