为什么不用api阿?用api不是很方便?
要不这样。程序运行时自己往机器里写个小文件,关闭时删除。
这个也可以作为程序已经运行的标志....程序运行时先判断有没有这个文件...
非法中止程序怎么办?让我想想...

解决方案 »

  1.   

    你的问题我挺感兴趣的:〉
    我想使用mutex类可以,看看他的成员吧:〉
      

  2.   

    干什么用API,C#对API支持很差的
      

  3.   

    简单。用System.Diagnostics.Process类中的成员函数GetProcesses()返回系统中的所有
    正在运行的进程,看看里面有没有特定应用的进程。有,程序退出即可
      

  4.   

    示例:
    public void OneApp()
    { Process[] proList=new Process[100];
    proList=Process.GetProcesses(); int AppCount=0;
    for(int i=0;i<100;i++)
    {
    if(proList[i].ProcessName.Equals["Process.exe"]) //设本程序的进程名为"Process.exe",可以在任务管理器上查看
    {
    AppCount++;
    }

    } if(AppCount>1)
    {
    //ExitApp();
    }
    }
      

  5.   

    策略失误!!!
    上面的一段没有意义:〉不好意思.测试过,在main函数中在启动进程之前,调用检测代码,没有问题:        public static void Main(string[] args) 
            {
    Process[] pro;
    pro =Process.GetProcessesByName("devenv");//进程名
    if(pro.Length>0)
    {
       Application.Exit();
       return; }
    Application.Run(new Form1());

            }
      

  6.   

    To楼上:
    我用C#在VS.Net中建立Windows工程csText(编译后应该产生csText.exe)
    系统自动建立Form1,在代码中加入using System.Diagnostics,
    把上面代码加入,其中pro=Process.GetProcessesNyName("Form1");
    编译运行csTest.exe,可是照样可以运行多次。
    望多指导!!!!!!!!!!
      

  7.   

    你的进程名字错了吧,应该是"csText"
      

  8.   

    To:Optimus
    我试过pro=Process.GetProcessesNyName("csText");
    结果本次应用启动都给退出了,而pro.Length=1,不知为什么
    望不吝赐教!!!!!!!!!!
      

  9.   

    可以了,是我太机械了,应该if(pro.Length>1),多谢!