using System; using System.Collections.Generic; using System.Windows.Forms; using System.Threading; using System.Diagnostics; using System.Runtime.InteropServices; using System.Reflection; using System.Web; using Shell32; using System.IO; using System.Net; using System.Text; namespace US.Browser.IE { static class Program { #region 添加用户信息 /// /// 应用程序的主入口点 /// [STAThread] static void Main(string[] args) { Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); //处理未处理的异常 AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); //处理主线程ui异常 Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException); //所有错误的异常 Process instance = _R(); //直接显示 if (instance == null) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(StaticClass.Restart(Environment.CommandLine)); //Environment.CommandLine args.Length > 0 ? StaticClass.Restart(Environment.CommandLine) : StaticClass.Restart("one") } } /// /// 出主线程ui的异常 /// /// /// static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) { BLL.USIE.Exception(sender, e.Exception);//错误处理 } /// /// 主线程ui错误处理 /// /// /// static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { BLL.USIE.Exception(sender, (Exception)e.ExceptionObject);//错误处理 } /// /// 获取正在运行的实例,没有运行的实例返回null; /// public static Process RunningInstance() { Process current = Process.GetCurrentProcess(); Process[] processes = Process.GetProcessesByName(current.ProcessName); foreach (Process process in processes) { if (process.Id != current.Id) { if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName) { return process; } } } return null; } /// /// 判断应用程序是否启动 /// /// private static Process _R() { Process currentproc = Process.GetCurrentProcess(); Process[] processcollection = Process.GetProcessesByName(currentproc.ProcessName.Replace(".vshost", string.Empty)); if (processcollection.Length >= 1) { foreach (Process process in processcollection) { if (process.Id != currentproc.Id) { if (Assembly.GetExecutingAssembly().Location.Replace(@"/", @"\") == currentproc.MainModule.FileName) { if (BLL.USIE.isnet()) { StaticClass._UST = ""; IntPtr formhwnd = BLL.WindowHWND.FindWindow(null, "云端"); BLL.WindowHWND.SetForegroundWindow(formhwnd); //将窗口放置最前端 BLL.WindowHWND.SwitchToThisWindow(formhwnd, true); BLL.WindowHWND.ShowWindow(formhwnd, BLL.WindowHWND.SW_SHOW); //调用api函数,正常显示窗口 } return process; } } } } return null; } #endregion #region 无用区域 ///// ///// 判断程序是否安装 ///// ///// //private static bool isIn() //{ // object _UDS; Microsoft.Win32.RegistryKey _UEK; // Microsoft.Win32.RegistryKey _UKE = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall");//获取所有安装的程序 // foreach (string USE in _UKE.GetSubKeyNames()) // { // _UEK = _UKE.OpenSubKey(USE); _UDS = _UEK.GetValue("DisplayName"); if (_UDS != null) // { // if (_UDS.ToString().Contains("云端")) { return true; } // } // } // return false; //} //[STAThread] //static void Main() //{ // Application.EnableVisualStyles(); // Application.SetCompatibleTextRenderingDefault(false); // Application.Run(StaticClass.getInstance()); //if (UD.TF) { int cfu = UD.CheckForUpdate().Count; } //} //if (UD.CFUTF()) //{ // try // { // Application.Run(UpdateCue.NewUpCF()); // } // catch { MessageBox.Show("文件损坏~!请重新下载!"); Environment.Exit(0); } //} //else //{ // Application.Run(StaticClass.getInstance()); //} //Application.Run(StaticClass.getInstance()); //MessageBox.Show(arg[0]); //private static Process RunningInstance() //{ // Process current = Process.GetCurrentProcess(); // MessageBox.Show(current.ProcessName); // Process[] processes = Process.GetProcessesByName(current.ProcessName); // //遍历与当前进程名称相同的进程列表 // foreach (Process process in processes) // { // //如果实例已经存在则忽略当前进程 // if (process.Id != current.Id) // { // //保证要打开的进程同已经存在的进程来自同一文件路径 // if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName) // { // //返回已经存在的进程 // return process; // } // } // } // return null; //} //private static Process RunningInstance() //{ // Process current = Process.GetCurrentProcess(); // Process[] processes = Process.GetProcessesByName(current.ProcessName); // //遍历与当前进程名称相同的进程列表 // foreach (Process process in processes) // { // //如果实例已经存在则忽略当前进程 // if (process.Id != current.Id) // { // //保证要打开的进程同已经存在的进程来自同一文件路径 // if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName) // { // //返回已经存在的进程 // return process; // } // } // } // return null; //} //Process p = new Process(); //p.StartInfo.UseShellExecute = false; ////AppDomain.CurrentDomain.BaseDirectory Application.StartupPath 两种获取本地地址方式 //p.StartInfo.FileName = Application.StartupPath + "\\US.Browser.IE.Update.exe"; //p.StartInfo.CreateNoWindow = true; //p.Start(); // //Environment.Exit(0); // // Application.Exit(); 居然还会继续执行下面的内容 //using (Mutex _UM = new Mutex(true, Application.ProductName, out _UTF)) //{ // //MessageBox.Show(Environment.CommandLine); // //Console.WriteLine("CommandLine: {0}", Environment.CommandLine); // if (_UTF) // { // Application.SetCompatibleTextRenderingDefault(false);//美观等考虑,以及多语言字体的兼容问题 // //string[] arg = Environment.GetCommandLineArgs();//获取命令 第一个为文件名 // //Update.Update UD = new Update.Update();//加载下载页面 // //try // //{ // // if (UD.CFUTF()) { Application.Run(UpdateCue.NewUpCF()); return; }//启动下载更新 // //} // //catch (Exception e) { } // Application.Run(StaticClass.getI(Environment.CommandLine));//启动应用程序 // } //} #endregion } }