Esempio n. 1
0
        public static void Shutdown()
        {
            if (OriginalOutput != null)
            {
                Console.SetOut(OriginalOutput);
            }

            if (OriginalEncoding != null)
            {
                Native.SetConsoleOutputCP((uint)OriginalEncoding.CodePage);
                Console.OutputEncoding = OriginalEncoding;
            }

            Native.FreeConsole();

            LogText = null;
            LogFile = null;
        }
Esempio n. 2
0
        // Console Output //

        #region [public] Initialize()
        public static void Initialize(string logfile = null, bool logReset = true, bool timeStamp = true, bool dateStamp = false)
        {
            if (!Native.AttachConsole(uint.MaxValue))
            {
                Native.AllocConsole();
            }

            OriginalOutput   = Console.Out;
            OriginalEncoding = Console.OutputEncoding;

            Native.SetConsoleOutputCP((uint)Encoding.UTF8.CodePage);
            Console.OutputEncoding = Encoding.UTF8;

            Stream outputStream;

            try
            {
                SafeFileHandle fileHandle = new SafeFileHandle(Native.GetStdHandle(STD_OUTPUT_HANDLE), true);
                outputStream = new FileStream(fileHandle, FileAccess.Write);
            }
            catch (Exception)
            {
                outputStream = Console.OpenStandardOutput();
            }

            Console.SetOut(new ConsoleWriter(outputStream, Console.OutputEncoding)
            {
                AutoFlush = true
            });

            Console.ForegroundColor = ConsoleColor.Gray;
            Console.Write("Initialized.");
            Console.ResetColor();
            Console.Clear();

            DefaultColor = ConsoleColor.Gray;

            if (!string.IsNullOrEmpty(logfile))
            {
                TimeStamp = timeStamp;
                DateStamp = dateStamp;
                LogFile   = Path.GetFullPath(logfile);
                string directoryName = Path.GetDirectoryName(LogFile);

                if (!DateStamp)
                {
                    string LogName = Path.GetFileNameWithoutExtension(LogFile) + ".{0}" + Path.GetExtension(LogFile);
                    LogFile = Path.Combine(directoryName, LogName);
                }

                if (!System.IO.Directory.Exists(directoryName))
                {
                    System.IO.Directory.CreateDirectory(directoryName);
                }

                if (logReset && System.IO.File.Exists(LogFile))
                {
                    System.IO.File.Delete(LogFile);
                }
            }

            consoleStatus     = new StatusText[0];
            inputHistory      = new List <string>();
            inputHistoryIndex = -1;
        }