CreateConsoleScreenBuffer (kernel32)
Last changed: -67.160.52.71

.
Summary

C# Signature:

[DllImport("Kernel32.dll")]
static extern IntPtr CreateConsoleScreenBuffer(
     UInt32 dwDesiredAccess,
     UInt32 dwShareMode,
     IntPtr secutiryAttributes,
     UInt32 flags,
     [MarshalAs(UnmanagedType.U4)] UInt32 screenBufferData
     );

User-Defined Types:

None.

Notes:

Apologies if the code is not shown with pretty format. I don't have time to fight with it.

Tips & Tricks:

Following links are helpful:

MSDN Documentation for 'CreateConsoleScreenBuffer'

http://msdn.microsoft.com/en-us/library/windows/desktop/ms686010%28v=vs.85%29.aspx

Sample Code:

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);
        }
    }

Alternative Managed API:

None. Console Managed class does not have buffer manipulation.

Documentation