示例#1
0
        static void Main(string[] Arguments)
        {
            if (Arguments.Length > 0 && Arguments[0].EndsWith(".efesc"))
            {
                if (!Win32Util.AttachConsole(-1))
                {
                    Win32Util.AllocConsole();
                }
                AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
                PluginManager = new PluginManager();
                String   Script = File.ReadAllText(Arguments[0]);
                string[] args   = new string[Arguments.Length - 1];
                Array.Copy(Arguments, 1, args, 0, args.Length);
                Console.WriteLine();
                Console.WriteLine("Executing " + Path.GetFileName(Arguments[0]) + "...");
                EFEScript.Execute(Script, args);
                Win32Util.FreeConsole();
                //Using this causes scripts to be runned over and over again if opened by double-clicking
                //But without this, you need to press ENTER before be able to use the cmd again if you run it from there...
                //SendKeys.SendWait("{ENTER}");
                return;
            }

            if (mutex.WaitOne(TimeSpan.Zero, true))
            {
                AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
                PluginManager = new PluginManager();
                FileManager   = new FileManager();
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                if (Arguments.Length > 0)
                {
                    Application.Run(new Form1(Arguments[0]));
                }
                else
                {
                    Application.Run(new Form1());
                }
            }
            else
            {
                String arg0 = "";
                if (Arguments.Length > 0)
                {
                    arg0 = Arguments[0];
                }
                foreach (var p in System.Diagnostics.Process.GetProcessesByName(System.Diagnostics.Process.GetCurrentProcess().ProcessName))
                {
                    if (p != System.Diagnostics.Process.GetCurrentProcess())
                    {
                        Win32Util.SendString(/*(IntPtr)Win32Util.HWND_BROADCAST*/ p.MainWindowHandle, arg0);
                    }
                }
            }
        }