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()); } }