public CHAR_INFO[] GetConsoleBuffer() { unsafe { ConsoleBufferInfo *bufferInfo = (ConsoleBufferInfo *)_consoleBufferInfo.Get(); CHAR_INFO[] buffer = new CHAR_INFO[bufferInfo->BufferSize]; fixed(CHAR_INFO *dst = buffer) { WinApi.CopyMemory(new IntPtr(dst), new IntPtr(_consoleBuffer.Get()), (uint)(buffer.Length * Marshal.SizeOf(typeof(CHAR_INFO)))); } return(buffer); //CONSOLE_SCREEN_BUFFER_INFO* consoleScreenInfo = (CONSOLE_SCREEN_BUFFER_INFO*) // _consoleScreenInfo.Get(); //CHAR_INFO[] buffer = new CHAR_INFO[_consoleBuffer.Size]; //fixed (CHAR_INFO* dst = buffer) //{ // WinApi.CopyMemory(new IntPtr(dst), new IntPtr(_consoleBuffer.Get()), // (uint)(buffer.Length * Marshal.SizeOf(typeof(CHAR_INFO)))); //} //return buffer; } }
public ConsoleBufferInfo GetConsoleBufferInfo() { unsafe { return(*((ConsoleBufferInfo *)_consoleBufferInfo.Get())); } }
public CONSOLE_SCREEN_BUFFER_INFO GetConsoleScreenInfo() { unsafe { return(*((CONSOLE_SCREEN_BUFFER_INFO *)_consoleScreenInfo.Get())); } }
public MOUSE_EVENT_RECORD GetConsoleMouseEvent() { unsafe { return(*((MOUSE_EVENT_RECORD *)_consoleMouseEvent.Get())); } }
public UIntPtr GetConsolePasteInfo() { unsafe { return(*((UIntPtr *)_consolePasteInfo.Get())); } }
public CONSOLE_CURSOR_INFO GetConsoleCursorInfo() { unsafe { return(*((CONSOLE_CURSOR_INFO *)_consoleCursorInfo.Get())); } }
private void Dispose(bool disposing) { lock (_disposeLock) { if (!_isDisposed) { if (disposing) { // Dispose managed resources. // Dispose wait handles. if (_procSafeWaitHandle != null) { _procSafeWaitHandle.Dispose(); } // Abort monitor thread. if (_monitorThread != null) { _monitorThread.Abort(); } if (_consoleParams.IsAvailable) { // Close console window. unsafe { ConsoleParams *consoleParams = (ConsoleParams *)_consoleParams.Get(); if (consoleParams->ConsoleWindowHandle != IntPtr.Zero) { WinApi.SendMessage(consoleParams->ConsoleWindowHandle, WinApi.WM_CLOSE, IntPtr.Zero, IntPtr.Zero); } } } // Dispose shared memory objects. if (_consoleParams != null) { _consoleParams.Dispose(); } if (_consoleScreenInfo != null) { _consoleScreenInfo.Dispose(); } if (_consoleCursorInfo != null) { _consoleCursorInfo.Dispose(); } if (_consoleBufferInfo != null) { _consoleBufferInfo.Dispose(); } if (_consoleBuffer != null) { _consoleBuffer.Dispose(); } if (_consoleCopyInfo != null) { _consoleCopyInfo.Dispose(); } if (_consolePasteInfo != null) { _consolePasteInfo.Dispose(); } if (_consoleMouseEvent != null) { _consoleMouseEvent.Dispose(); } if (_consoleNewSizeInfo != null) { _consoleNewSizeInfo.Dispose(); } if (_consoleNewScrollPos != null) { _consoleNewScrollPos.Dispose(); } //// Kill console process. //if (_process != null) //{ // _process.Kill(); // _process.Dispose(); //} } // Dispose unmanaged resources. } _isDisposed = true; } }