private string Read(int lineNumber, int width) { if (width <= 0) { return(string.Empty); } var buffer = new ConsoleCharInfo[1, width]; _outputBuffer.ReadBlock(buffer, 0, 0, 0, lineNumber, width - 1, lineNumber); return(GetContent(buffer, width, 1)); }
public void Write_To_Buffer() { var process = new Process { StartInfo = { FileName = "cmd.exe" } }; process.Start(); AttachConsole(process.Id); var buffer = JConsole.GetActiveScreenBuffer(); buffer.WriteLine("dir"); var block = new ConsoleCharInfo[buffer.Height, buffer.Width]; buffer.ReadBlock(block, 0, 0, 0, 0, buffer.Height, buffer.Width); }
public void Buffer_Scroll_Test() { var process = new Process { StartInfo = { FileName = "cmd.exe" } }; process.Start(); AttachConsole(process.Id); var buffer = JConsole.GetActiveScreenBuffer(); Thread.Sleep(1000); var chars = new ConsoleCharInfo[300, 120]; buffer.ReadBlock(chars, 0, 0, 0, 0, 120, 299); // for (int i = 0; i < 500; i++) // { // var chars = new ConsoleCharInfo[1, 120]; // buffer.ReadBlock(chars, 0, 0, 0, i, 120, i); // } // for (int i = 0; i < 25; i++) // { // var events = new List<EventArgs>(); // events.Add(new ConsoleKeyEventArgs { KeyDown = true, RepeatCount = 1, KeyChar = 'd' }); // events.Add(new ConsoleKeyEventArgs { KeyDown = false, RepeatCount = 1, KeyChar = 'd' }); // events.Add(new ConsoleKeyEventArgs { KeyDown = true, RepeatCount = 1, KeyChar = 'i' }); // events.Add(new ConsoleKeyEventArgs { KeyDown = false, RepeatCount = 1, KeyChar = 'i' }); // events.Add(new ConsoleKeyEventArgs { KeyDown = true, RepeatCount = 1, KeyChar = 'r' }); // events.Add(new ConsoleKeyEventArgs { KeyDown = false, RepeatCount = 1, KeyChar = 'r' }); // events.Add(new ConsoleKeyEventArgs { KeyDown = true, RepeatCount = 1, KeyChar = (char)13 }); // events.Add(new ConsoleKeyEventArgs { KeyDown = false, RepeatCount = 1, KeyChar = (char)13 }); // // var inputBuffer = JConsole.GetInputBuffer(); // inputBuffer.WindowInput = true; // inputBuffer.WriteEvents(events, events.Count()); // // Thread.Sleep(500); // buffer.WriteLine(buffer.WindowTop.ToString()); // // } }
static void Main(string[] args) { Random colors = new Random(); using (ConsoleScreenBuffer sb1 = JConsole.GetActiveScreenBuffer()) { // Fill the screen buffer for (int row = 0; row < sb1.Height; row++) { StringBuilder builder = new StringBuilder(sb1.Width); string text = string.Format("Row {0} ", row); while (builder.Length < sb1.Width) { builder.Append(text); } sb1.WriteXY(builder.ToString(), 0, row); ConsoleColor fg = (ConsoleColor)colors.Next(15); ConsoleColor bg = (ConsoleColor)colors.Next(15); sb1.FillAttributeXY(fg, bg, builder.Length, 0, row); } // wait for a key press Console.ReadKey(); // Move a part of the buffer to the top sb1.MoveBufferArea(50, 200, 30, 50, 0, 0); Console.ReadKey(); // Position the window to show the area that was moved sb1.SetWindowPosition(20, 190); Console.ReadKey(); // Create a new screen buffer using (ConsoleScreenBuffer sb2 = new ConsoleScreenBuffer()) { sb2.WriteLine("Second screen buffer"); // Change buffer size and window size sb2.SetBufferSize(100, 100); sb2.SetWindowSize(sb2.MaximumWindowWidth, sb2.MaximumWindowHeight); // set new buffer as active -- changes console window size JConsole.SetActiveScreenBuffer(sb2); Console.ReadKey(); // Show reading screen buffer... sb2.WriteXY("Copied with ReadXY, ReadAttributesXY", 0, 1); string chars = sb1.ReadXY(50, 0, 1); sb2.WriteXY(chars, 0, 2); ConsoleCharAttribute[] attrs = sb1.ReadAtrributesXY(50, 0, 1); sb2.WriteAttributesXY(attrs, 50, 0, 2); sb2.WriteXY("Copied with ReadBlock/WriteBlock", 0, 3); ConsoleCharInfo[,] block = new ConsoleCharInfo[10, 20]; sb1.ReadBlock(block, 0, 0, 20, 100, 40, 110); sb2.WriteBlock(block, 0, 0, 0, 4, 20, 14); Console.ReadKey(); // reset active buffer JConsole.SetActiveScreenBuffer(sb1); } Console.ReadKey(); } }