使应用程序只能运行单个实例

 using System;
using System.Windows.Forms;
using System.Diagnostics;   
using System.Reflection;
using System.Runtime.InteropServices;
namespace Train.OnceInitial
{
    static class Program
    {
        /// <summary>
        /// アプリケーションのメイン エントリ ポイントです。
        /// </summary>
        [STAThread]
        static void Main()
        {
             if( Exist() )   
             {   
                 Application.Exit();   
                 return;   
             }
            
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new frmMain());
        }

        [DllImport( "User32.dll" )]   
        private static extern bool ShowWindowAsync( System.IntPtr hWnd, int cmdShow );   
        [DllImport( "User32.dll" )]   
        private static extern bool SetForegroundWindow( System.IntPtr hWnd );   
 
        public static bool Exist()   
        {   
            bool ret = false;   
            Process current = Process.GetCurrentProcess();   //获取当前进程
            Process[] processes = Process.GetProcessesByName( current.ProcessName );   //检查表中查找当前进程,同名·
            //遍历与当前进程名称相同的进程列表   
            foreach( Process process in processes )   
            {   
                //Ignore the current process   
                if( process.Id != current.Id )   //不仅同名,而且同ID的进程
                {   
                    //Make sure that the process is running from the exe file.   
                    if( Assembly.GetExecutingAssembly().Location.Replace( "/", "//" ) == current.MainModule.FileName )   
                    {   
                        ShowWindowAsync( process.MainWindowHandle, 1 ); //调用api函数,正常显示窗口   
                        SetForegroundWindow( process.MainWindowHandle ); //将窗口放置最前端。   
                        return true;   
                    }   
                }   
            }   
            return ret;   
        }   
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值