// Get all instances of Notepad running on the local
// computer.
Process [] localByName = Process.GetProcessesByName("notepad");

解决方案 »

  1.   

    同意,看看Process类的帮助(MSDN)吧,里面有例程的
      

  2.   

    using System;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;
    using System.Diagnostics;
    using System.Reflection;public class OneInstnace
    {
      [STAThread]
      public static void Main()
      {
        //得到正在运行的例程
        Process instance = RunningInstance();
        if (instance == null)
        {
          //如果没有其它例程,就新建一个窗体
          Application.Run (new Form());
        }
        else
        {
          //处理发现的例程
          HandleRunningInstance(instance);
        }
      }
      public static Process RunningInstance()
      {
        Process current = Process.GetCurrentProcess();
        Process[] processes = Process.GetProcessesByName (current.ProcessName);    //遍历正在有相同名字运行的例程
        foreach (Process process in processes)
        {
          //忽略现有的例程
          if (process.Id != current.Id)
          {
            //确保例程从EXE文件运行
            if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") ==
              current.MainModule.FileName)
            {
              //返回另一个例程实例
              return process;
            }
          }
        }    //没有其它的例程,返回Null
        return null;
      }  public static void HandleRunningInstance(Process instance)
      {
        //确保窗口没有被最小化或最大化
        ShowWindowAsync (instance.MainWindowHandle , WS_SHOWNORMAL);    //设置真实例程为foreground window
        SetForegroundWindow (instance.MainWindowHandle);
      }  [DllImport("User32.dll")]  private static extern bool ShowWindowAsync(
        IntPtr hWnd, int cmdShow);
      [DllImport("User32.dll")] private static extern bool
        SetForegroundWindow(IntPtr hWnd);
      private const int WS_SHOWNORMAL = 1;
    }
      

  3.   

    或者被编译器打开或者被反编译程序打开等等
    ------------------
    同意那个外星人---- haiwangstar(南河三(天狼星上有没有普及C#)) 的说法