public WinCon.CHAR_INFO[,] GetCharInfoInRectangle(IntPtr handle, Rectangle rect) { WinCon.SMALL_RECT readRectangle = new WinCon.SMALL_RECT(); readRectangle.Top = (short)rect.Top; readRectangle.Bottom = (short)(rect.Bottom - 1); readRectangle.Left = (short)rect.Left; readRectangle.Right = (short)(rect.Right - 1); WinCon.COORD dataBufferSize = new WinCon.COORD(); dataBufferSize.X = (short)rect.Width; dataBufferSize.Y = (short)rect.Height; WinCon.COORD dataBufferPos = new WinCon.COORD(); dataBufferPos.X = 0; dataBufferPos.Y = 0; WinCon.CHAR_INFO[,] data = new WinCon.CHAR_INFO[dataBufferSize.Y, dataBufferSize.X]; NativeMethods.Win32BoolHelper(WinCon.ReadConsoleOutput(handle, data, dataBufferSize, dataBufferPos, ref readRectangle), string.Format("Attempting to read rectangle (L: {0}, T: {1}, R: {2}, B: {3}) from output buffer.", readRectangle.Left, readRectangle.Top, readRectangle.Right, readRectangle.Bottom)); return(data); }