protected void SetupBuffer(IntPtr buffer, ref CONSOLE_FONT_INFOEX fontInfo, ref CONSOLE_MODE_OUTPUT outLast) { // Console mode GetConsoleModeOut(buffer, out outLast); CONSOLE_MODE_OUTPUT mode = outLast | CONSOLE_MODE_OUTPUT.ENABLE_VIRTUAL_TERMINAL_PROCESSING; SetConsoleMode(buffer, (uint)mode); // Font CONSOLE_FONT_INFOEX lastFont = new CONSOLE_FONT_INFOEX(); GetCurrentConsoleFontEx(buffer, false, ref lastFont); if (fontInfo.Equals(default(CONSOLE_FONT_INFOEX))) { fontInfo = lastFont; Info.SetFont(lastFont); } CONSOLE_FONT_INFOEX newFont = new CONSOLE_FONT_INFOEX(); newFont.cbSize = (uint)Marshal.SizeOf(newFont); newFont.FaceName = fontInfo.FaceName; newFont.dwFontSize.X = fontInfo.dwFontSize.X; newFont.dwFontSize.Y = fontInfo.dwFontSize.Y; SetCurrentConsoleFontEx(buffer, false, ref newFont); SetConsoleScreenBufferSize(buffer, Info.size); }
public override void Disable() { CONSOLE_FONT_INFOEX lastFont = Info.font; CONSOLE_MODE_OUTPUT lastMode = (CONSOLE_MODE_OUTPUT)Buffer.lastMode; SetupBuffer(Buffer.ptr, ref lastFont, ref lastMode); SetConsoleMode(Buffer.ptr, Buffer.lastMode); }
public override void Enable() { GetStdOut(out IntPtr bufferPtr); CONSOLE_FONT_INFOEX bufferFont = Info.font; CONSOLE_MODE_OUTPUT lastMode = 0; SetupBuffer(bufferPtr, ref bufferFont, ref lastMode); Buffer = new OutputHandlerBufferInfo(bufferPtr, (uint)lastMode); }
protected bool GetConsoleModeOut(IntPtr hConsoleHandle, out CONSOLE_MODE_OUTPUT mode) { if (!GetConsoleMode(hConsoleHandle, out uint lpMode)) { mode = 0; return(false); } mode = (CONSOLE_MODE_OUTPUT)lpMode; return(true); }
public override void Disable() { OutputHandlerBufferInfo bufferInfo = Buffers[0]; CONSOLE_FONT_INFOEX lastFont = Info.font; CONSOLE_MODE_OUTPUT lastMode = 0; SetupBuffer(bufferInfo.ptr, ref lastFont, ref lastMode); SetConsoleActiveScreenBuffer(bufferInfo.ptr); SetConsoleMode(bufferInfo.ptr, bufferInfo.lastMode); Buffers = null; WritingBuffer = -1; }
public override void Enable() { Buffers = new OutputHandlerBufferInfo[BUFFER_COUNT]; for (int i = 0; i < BUFFER_COUNT; i++) { IntPtr bufferPtr = CreateConsoleScreenBuffer( (uint)(BUFFER_ACCESS_MODE.GENERIC_WRITE | BUFFER_ACCESS_MODE.GENERIC_READ), (uint)(BUFFER_SHARE_MODE.FILE_SHARE_WRITE | BUFFER_SHARE_MODE.FILE_SHARE_READ), new IntPtr(0), 1, new IntPtr(0)); CONSOLE_FONT_INFOEX bufferFont = Info.font; CONSOLE_MODE_OUTPUT lastMode = 0; SetupBuffer(bufferPtr, ref bufferFont, ref lastMode); Buffers[i] = new OutputHandlerBufferInfo(bufferPtr, (uint)lastMode); } WritingBuffer = 1; SetConsoleActiveScreenBuffer(Buffers[0].ptr); }