コード例 #1
0
        static void Main(string[] args)
        {
            // Определяем язык интерфейса
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(Properties.Settings.Default.UILanguage);

            bool help          = false;
            bool version       = false;
            bool IsConsoleMode = false;
            var  p             = new OptionSet()
            {
                { "h|?|help", "show this message and exit.", v => help = v != null },
                { "c|C|Console", "Запуск программы в консольном режиме", v => IsConsoleMode = v != null },
                { "v|V|version", "output version information and exit.", v => version = v != null },
                //{ "a|alg|algorithm", "алгоритм поиска клонов. см. CloneSearchAlgoritms", v => f},
                //{ "p|P|path", "Путь к каталогу с исходниками"},
                //{ "l|lang|language", "язык программирования"},
                //{ "e|ext|extension", "расширения файлов для обработки"},
            };

            try
            {
                p.Parse(args);
            }
            catch (OptionException)
            {
                //Console.Write("localization: ");
                //Console.WriteLine(e.Message);
                return;
            }

            if (IsConsoleMode)
            {
                // Получить указатель на "активное" окно (на то, которое сейчас на переднем плане)
                // The idea here is that if the user is starting our application from an existing console
                // shell, that shell will be the uppermost window.  We'll get it and attach to it
                IntPtr ForegroundWindowPtr = GetForegroundWindow();
                int    ProcessID           = -1;
                GetWindowThreadProcessId(ForegroundWindowPtr, out ProcessID);
                Process process = Process.GetProcessById(ProcessID);

                if (process.ProcessName == "cmd")    //Is the uppermost window a cmd process?
                {
                    //we have a console to attach to ..
                    AttachConsole(process.Id);
                }
                else
                {
                    //no console AND we're in console mode ... create a new console.
                    AllocConsole();
                }

                if (help)
                {
                    p.WriteOptionDescriptions(Console.Out);
                    //Console.WriteLine(AboutBox.GetICloneBriefInfo());
                    //Console.WriteLine(ICloneLocalization.CONSOLE_UseGUIModeMessage);
                    //Console.WriteLine(ICloneLocalization.CONSOLE_WaitingMessage);
                    Console.ReadLine();
                }

                if (version)
                {
                    Console.WriteLine(AboutBox.GetICloneBriefInfo());
                }
                else
                {
                    Console.WriteLine(ICloneLocalization.CNMMESS_FunctionalityNotSupported);
                    Console.WriteLine(ICloneLocalization.CONSOLE_WaitingMessage);
                    Console.ReadLine();
                }

                FreeConsole();
            }
            else
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new MainWindow());
            }
        }