C#程序多用户只启动一个进程的方法

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);
    }
原文地址:https://www.cnblogs.com/scgw/p/1563364.html