我开发C#程序中,需要在启动系统时,启动这个程序,
但是现在有个问题
如果多用户登录这个系统,程序会启动多次,
如果启动多次程序就出问题,
有什么方法实现,只启动一个进程

解决方案 »

  1.   

    嗯,最近刚刚弄了一个
    Main函数
    [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                webscreenshot wb = new webscreenshot();
                Process current = Process.GetCurrentProcess();
                bool newinstance = true;
                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)
                        {
                            //返回另一个例程实例  
                            current = process;
                            newinstance = false;
                            break;
                        }
                    }
                }
                if (newinstance)
                {
                    Application.Run(wb);
                }
                else
                {
                    ShowWindowAsync(current.MainWindowHandle, 1);                //设置真实例程为foreground   window  
                    SetForegroundWindow(current.MainWindowHandle);
                }
            }
    引入这两个API函数
    [DllImport("User32.dll")]
            private static extern bool ShowWindowAsync(  IntPtr hWnd, int cmdShow);        [DllImport("User32.dll")]
            private static extern bool SetForegroundWindow(IntPtr hWnd);
        }就是这样