日期:2014-05-18  浏览次数:21049 次

c# 获取当前实例的问题
我使用互斥体的方法来实现了只运行一个程序:
C# code

   static void Main()
        {
            bool runone;
            System.Threading.Mutex run = new System.Threading.Mutex(true, "xinbiao_a_test", out runone);
            if (runone)
            {
              run.ReleaseMutex();
              Application.EnableVisualStyles();
              Application.SetCompatibleTextRenderingDefault(false);
              Application.Run(new Form1());
            }
            else
            {
                MessageBox.Show("已经运行了一个实例了。");
                //如何获取这个已经运行的实例呢????
            }
        }





请问在MessageBox.Show("已经运行了一个实例了。") 这个地方,如果获取当前已经运行的窗体,并进一步操作。我尝试用了
Application.OpenForms 但是获取不到当前已经运行的窗体,但是我需要在这个已经运行的窗体上进行一些操作,希望各位大侠帮忙解决下,最好是有详细的代码

------解决方案--------------------
C# code

System.Diagnostics.Process[] allProcess = System.Diagnostics.Process.GetProcesses();
            foreach (System.Diagnostics.Process thisprocess in allProcess)
            {
                string processName = thisprocess.ProcessName;
                if (processName.ToLower() == "进程名字")
                {
                    try
                    {
                        //LZ在这操作你要操作的东西
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show(e.Message);
                        return;
                    }
                }
            }