获取当前正在运行的所有进程的信息

时间:2022-02-07 19:22:57
利用System.Diagnostics.Process类的静态函数,获取当前正在运行的所有进程的信息。利用程序集的attribute存放特定信息.

9 个解决方案

#1


你是想问什么???

#2


UP

#3


与一楼有同样的疑惑……

#4


 编写一个程序,该程序只能启动一个实例。在运行第二个实例的时候,会打印一句话:该进程已经启动了一个实例,然后退出运行。
    基本思路是这样的:利用System.Diagnostics.Process类的静态函数,获取当前正在运行的所有进程的信息。若发现与本程序具有相同特征的进程超过1个,就打印出错信息,并结束当前进程。
    最好是利用程序集的attribute存放特定信息,然后用Assembly类对象的GetCustomAttributes()获取该信息进行判断。

#5


利用Mutex类...和一个BOOL值就可以了

#6


  
        private static Mutex m_MutexObject;
        private static string m_MutexName = "XXXXX";
        [STAThread]
        static void Main()
        {           
           try
           {
               m_MutexObject = new Mutex(false, m_MutexName);
           }
           catch(ApplicationException)
           { 

           }
           if (!m_MutexObject.WaitOne(0, false))
           {
               CommFucs.ShowErrMessage("该进程已经启动了一个实例"); 
               m_MutexObject.Close();
               return;
           }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new XXX());
        }

#7


引用 6 楼 zjhphc 的回复:
  
        private static Mutex m_MutexObject; //Mutex类,5楼提到的.
        private static string m_MutexName = "XXXXX"; 
        [STAThread] 
        static void Main() 
        {          
          try 
          { 
              m_MutexObject = new Mutex(false, m_MutexName); 
          } 
          catch(ApplicationException) 
          { 

          } 
          if (!m_MutexObject.WaitOne(0, fals…


来晚了...学习...

#8


辛苦了,
可是,要求 利用System.Diagnostics.Process类的静态函数 
和Assembly类对象的GetCustomAttributes()

#9


Process[] processes=Process.GetProcesses();
for(int i=0;i<processes.Length;i++)
{
 //获得应用程序的主模块,其实就可以认为是你的程序
 ProcessModule pm= p[i].MainModule;
 //XXXX就是AssemblyInfo.cs文件中[assembly: AssemblyTitle("title")]里面的title
 if(pm.FileVersionInfo.FileDescription==“XXXX”)
 {
   MessageBox.Show("程序已经运行。");
   return;
 }
}
 Application.EnableVisualStyles();
 Application.SetCompatibleTextRenderingDefault(false);
 Application.Run(new FrmMain());

#1


你是想问什么???

#2


UP

#3


与一楼有同样的疑惑……

#4


 编写一个程序,该程序只能启动一个实例。在运行第二个实例的时候,会打印一句话:该进程已经启动了一个实例,然后退出运行。
    基本思路是这样的:利用System.Diagnostics.Process类的静态函数,获取当前正在运行的所有进程的信息。若发现与本程序具有相同特征的进程超过1个,就打印出错信息,并结束当前进程。
    最好是利用程序集的attribute存放特定信息,然后用Assembly类对象的GetCustomAttributes()获取该信息进行判断。

#5


利用Mutex类...和一个BOOL值就可以了

#6


  
        private static Mutex m_MutexObject;
        private static string m_MutexName = "XXXXX";
        [STAThread]
        static void Main()
        {           
           try
           {
               m_MutexObject = new Mutex(false, m_MutexName);
           }
           catch(ApplicationException)
           { 

           }
           if (!m_MutexObject.WaitOne(0, false))
           {
               CommFucs.ShowErrMessage("该进程已经启动了一个实例"); 
               m_MutexObject.Close();
               return;
           }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new XXX());
        }

#7


引用 6 楼 zjhphc 的回复:
  
        private static Mutex m_MutexObject; //Mutex类,5楼提到的.
        private static string m_MutexName = "XXXXX"; 
        [STAThread] 
        static void Main() 
        {          
          try 
          { 
              m_MutexObject = new Mutex(false, m_MutexName); 
          } 
          catch(ApplicationException) 
          { 

          } 
          if (!m_MutexObject.WaitOne(0, fals…


来晚了...学习...

#8


辛苦了,
可是,要求 利用System.Diagnostics.Process类的静态函数 
和Assembly类对象的GetCustomAttributes()

#9


Process[] processes=Process.GetProcesses();
for(int i=0;i<processes.Length;i++)
{
 //获得应用程序的主模块,其实就可以认为是你的程序
 ProcessModule pm= p[i].MainModule;
 //XXXX就是AssemblyInfo.cs文件中[assembly: AssemblyTitle("title")]里面的title
 if(pm.FileVersionInfo.FileDescription==“XXXX”)
 {
   MessageBox.Show("程序已经运行。");
   return;
 }
}
 Application.EnableVisualStyles();
 Application.SetCompatibleTextRenderingDefault(false);
 Application.Run(new FrmMain());