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

时间:2022-06-01 19:10:04

Main函数

C#程序多用户只启动一个进程的方法[STAThread]
C#程序多用户只启动一个进程的方法        
static   void  Main()
C#程序多用户只启动一个进程的方法C#程序多用户只启动一个进程的方法        
{
C#程序多用户只启动一个进程的方法            Application.EnableVisualStyles();
C#程序多用户只启动一个进程的方法            Application.SetCompatibleTextRenderingDefault(
false);
C#程序多用户只启动一个进程的方法            webscreenshot wb 
= new webscreenshot();
C#程序多用户只启动一个进程的方法            Process current 
= Process.GetCurrentProcess();
C#程序多用户只启动一个进程的方法            
bool newinstance = true;
C#程序多用户只启动一个进程的方法            Process[] processes 
= Process.GetProcessesByName(current.ProcessName);
C#程序多用户只启动一个进程的方法
C#程序多用户只启动一个进程的方法            
//遍历正在有相同名字运行的例程  
C#程序多用户只启动一个进程的方法
            foreach (Process process in processes)
C#程序多用户只启动一个进程的方法C#程序多用户只启动一个进程的方法            
{
C#程序多用户只启动一个进程的方法                
//忽略现有的例程  
C#程序多用户只启动一个进程的方法
                if (process.Id != current.Id)
C#程序多用户只启动一个进程的方法C#程序多用户只启动一个进程的方法                
{
C#程序多用户只启动一个进程的方法                    
//确保例程从EXE文件运行  
C#程序多用户只启动一个进程的方法
                    if (Assembly.GetExecutingAssembly().Location.Replace("/""\\"== current.MainModule.FileName)
C#程序多用户只启动一个进程的方法C#程序多用户只启动一个进程的方法                    
{
C#程序多用户只启动一个进程的方法                        
//返回另一个例程实例  
C#程序多用户只启动一个进程的方法
                        current = process;
C#程序多用户只启动一个进程的方法                        newinstance 
= false;
C#程序多用户只启动一个进程的方法                        
break;
C#程序多用户只启动一个进程的方法                    }

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

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

C#程序多用户只启动一个进程的方法            
if (newinstance)
C#程序多用户只启动一个进程的方法C#程序多用户只启动一个进程的方法            
{
C#程序多用户只启动一个进程的方法                Application.Run(wb);
C#程序多用户只启动一个进程的方法            }

C#程序多用户只启动一个进程的方法            
else
C#程序多用户只启动一个进程的方法C#程序多用户只启动一个进程的方法            
{
C#程序多用户只启动一个进程的方法                ShowWindowAsync(current.MainWindowHandle, 
1);
C#程序多用户只启动一个进程的方法
C#程序多用户只启动一个进程的方法                
//设置真实例程为foreground   window  
C#程序多用户只启动一个进程的方法
                SetForegroundWindow(current.MainWindowHandle);
C#程序多用户只启动一个进程的方法            }

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

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


引入这两个API函数

C#程序多用户只启动一个进程的方法[DllImport( " User32.dll " )]
C#程序多用户只启动一个进程的方法        
private   static   extern   bool  ShowWindowAsync(  IntPtr hWnd,  int  cmdShow);
C#程序多用户只启动一个进程的方法
C#程序多用户只启动一个进程的方法        [DllImport(
" User32.dll " )]
C#程序多用户只启动一个进程的方法        
private   static   extern   bool  SetForegroundWindow(IntPtr hWnd);
C#程序多用户只启动一个进程的方法    }
C#程序多用户只启动一个进程的方法