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);
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值