public static void CreateConsole() { if (IsConsoleCreated) { return; } bool UseSystem = !Variables.GetBool("useCustomConsole"); if (!UseSystem) { WaitingForForm = true; new Thread(delegate() { if (cWnd == null) { cWnd = new CustomConsoleWindow(); cWnd.ShowDialog(); } }).Start(); while (cWnd == null) { Thread.Sleep(10); } IsConsoleCreated = true; WaitingForForm = false; } else { AllocConsole(); Console.CancelKeyPress += Console_CancelKeyPress; // stdout's handle seems to always be equal to 7 IntPtr defaultStdout = new IntPtr(7); currentStdout = GetStdHandle(StdOutputHandle); if (currentStdout != defaultStdout) { // reset stdout SetStdHandle(StdOutputHandle, defaultStdout); } IsConsoleCreated = true; try { // reopen stdout TextWriter writer = new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = true }; Console.SetOut(writer); Console.OutputEncoding = System.Text.Encoding.UTF8; } catch (Exception ex) { EConsole.WriteLine("Can't set Console Output Encoding: " + ex.ToString(), true, ConsoleColor.Red); } try { TextReader reader = new StreamReader(Console.OpenStandardInput()); Console.SetIn(reader); Console.InputEncoding = System.Text.Encoding.Unicode; } catch (Exception ex) { EConsole.WriteLine("Can't set Console Input Encoding: " + ex.ToString(), true, ConsoleColor.Red); } } PrintIntro(); Version cVer = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; Title = String.Format("CmdSharp {0}.{1}", cVer.Major, cVer.Minor); }
public TypeHelperWnd(CustomConsoleWindow w) { console = w; InitializeComponent(); }