[DllImport("Kernel32.dll")]
static extern IntPtr CreateConsoleScreenBuffer(
UInt32 dwDesiredAccess,
UInt32 dwShareMode,
IntPtr secutiryAttributes,
UInt32 flags,
[MarshalAs(UnmanagedType.U4)] UInt32 screenBufferData
);
None.
Apologies if the code is not shown with pretty format. I don't have time to fight with it.
Following links are helpful:
MSDN Documentation for 'CreateConsoleScreenBuffer'
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686010%28v=vs.85%29.aspx
using System.Runtime.InteropServices; // Needed for the DllImport Attribute
namespace Namepace
{
class Class
{
[DllImport("Kernel32.dll")]
private static extern IntPtr CreateConsoleScreenBuffer(
UInt32 dwDesiredAccess,
UInt32 dwShareMode,
IntPtr secutiryAttributes,
UInt32 flags,
[MarshalAs(UnmanagedType.U4)] UInt32 screenBufferData
);
(...)
static void Main(string[] args)
{
/*
* Arguments:
* 0 - From MSDN Documentation.
* 0x00000001 - From MSDN Documentation.
* IntPtr.Zero - Since I did not need to pass it on to a child process, I decided to leave this pointer as null.
* 1 - Found this value on the Internet. It worked so I left it there.
* 0 - MSDN documentation says this must be null.
*/
IntPtr ptr = CreateConsoleScreenBuffer(0, 0x00000001, IntPtr.Zero, 1, 0);
// Verifying the PInvoke worked.
Int32 err = Marshal.GetLastWin32Error();
if (err != 0)
{
Console.WriteLine("Error: {0}", err);
throw new System.ComponentModel.Win32Exception(err);
}
}
None. Console Managed class does not have buffer manipulation.