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());
//
//            }
        }
Exemple #4
0
        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();
            }
        }