示例#1
0
        static void Main(string[] args)
        {
            if (Environment.GetCommandLineArgs().Contains<string>("/installed"))
            {
                Properties.Settings.Default.Upgrade();
                Properties.Settings.Default.UpgradeSettings = false;
                Properties.Settings.Default.Save();
                Application.Restart();
                return;
            }
            mutex = new Mutex(true, "mutex_beta_manager_"+Properties.Settings.Default.vm_name+"_vm_runonce");
            if (mutex.WaitOne(TimeSpan.Zero, true) || System.Diagnostics.Debugger.IsAttached)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);

                if (Properties.Settings.Default.UpgradeSettings)
                {
                    Properties.Settings.Default.Upgrade();
                    Properties.Settings.Default.UpgradeSettings = false;
                    Properties.Settings.Default.Save();
                }

                if (Environment.GetCommandLineArgs().Contains<string>("/reset"))
                {
                    Properties.Settings.Default.Reset();
                    Properties.Settings.Default.Save();
                }

                identity = getIdentity(Environment.GetCommandLineArgs().Contains<string>("/auth"));

                LogEvents += new LogEvent(NetworkLog);

                VM = new VirtualMachine();

                DBG = new Forms.Debug();
                VM.OnVmEvent += new VirtualMachine.VmEvent(DBG.debugLog);
                VM.OnVmEvent += new VirtualMachine.VmEvent(Log);

                NL = new Network_listener();
                NL.OnPing += delegate(string auth, string msg)
                {
                    Packet p = new Packet();
                    p.dataIdentifier = Packet.DataIdentifier.Pong;
                    p.message = auth + "[" + msg +"]:T["+ DateTime.Now.Subtract(new DateTime(1970, 1, 1, 0, 0, 0)).TotalMilliseconds+"]";
                    Network_Broadcast.send(p);
                };
                NL.OnInfo += delegate(string auth, string msg)
                {
                    Log(auth + ": " + msg, "Devel VM Manager: Informator", 1);
                };
                NL.OnError += delegate(string auth, string msg)
                {
                    Log(String.Format("!!! {1} ({0}) !!!", auth, msg), "Devel VM Manager: Informator", 2);
                };
                NL.OnVersion += delegate(string auth, string msg)
                {
                    Packet p = new Packet();
                    p.dataIdentifier = Packet.DataIdentifier.Debug;
                    p.message = "AppVer: " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
                    p.message += " / ImgVer: " + VM.getVersion();
                    Network_Broadcast.send(p);
                };

                Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
                AppDomain.CurrentDomain.FirstChanceException += (object source, FirstChanceExceptionEventArgs e) =>
                {
                    Packet p = new Packet();
                    p.dataIdentifier = Packet.DataIdentifier.Debug;
                    p.message = String.Format("FirstChanceException event raised in {0}: {2}\nStackTrace:{1}", AppDomain.CurrentDomain.FriendlyName, e.Exception.StackTrace, e.Exception.Message);
                    Network_Broadcast.send(p);
                };
                SetProcessShutdownParameters(0x3FF, 0x00000001);
                Application.Run(new fMain());
                mutex.ReleaseMutex();
            }
            else
            {
                if(Environment.GetCommandLineArgs().Contains<string>("/r")) {
                    Process[] prcs = Process.GetProcessesByName("Devel_VM");
                    foreach (Process prc in prcs)
                    {
                        if (Process.GetCurrentProcess().Id != prc.Id)
                        {
                            prc.Kill();
                        }
                    }
                    prcs = Process.GetProcessesByName("Beta_Manager");
                    foreach (Process prc in prcs)
                    {
                        if (Process.GetCurrentProcess().Id != prc.Id)
                        {
                            prc.Kill();
                        }
                    }
                    prcs = Process.GetProcessesByName("VBoxSVC");
                    foreach (Process prc in prcs) prc.Kill();
                    prcs = Process.GetProcessesByName("VBoxHeadless");
                    foreach (Process prc in prcs) prc.Kill();
                    Application.Restart();
                }

                NativeMethods.PostMessage(
                    (IntPtr)NativeMethods.HWND_BROADCAST,
                    NativeMethods.WM_SHOWME,
                    IntPtr.Zero,
                    IntPtr.Zero
                );
            }
        }
示例#2
0
文件: Form1.cs 项目: xbojer/devel_vm
 private void Form1_Load(object sender, EventArgs e)
 {
     nl = new Network_listener();
     nl.OnAny += new Network_listener.AnyEvent(Any);
 }