Search
Module:
Directory

   Desktop Functions:

   Smart Device Functions:


Show Recent Changes
Subscribe (RSS)
Misc. Pages
Comments
FAQ
Helpful Tools
Playground
Suggested Reading
Website TODO List
Download Visual Studio Add-In

GetCurrentConsoleFontEx (kernel32)
 
.
Summary
TODO - a short description

C# Signature:

    [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
    extern static bool GetCurrentConsoleFontEx(
    IntPtr hConsoleOutput,
    bool bMaximumWindow,
    ref CONSOLE_FONT_INFOEX lpConsoleCurrentFont);
    extern static bool GetCurrentConsoleFontEx(IntPtr hConsoleOutput, bool bMaximumWindow, [In, Out] CONSOLE_FONT_INFOEX lpConsoleCurrentFont);

VB Signature:

Declare Function GetCurrentConsoleFontEx Lib "kernel32.dll" (TODO) As TODO

User-Defined Types:

C#

    [StructLayout(LayoutKind.Sequential)]
    private struct COORD
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
    public class CONSOLE_FONT_INFOEX
    {
    private int cbSize;
    public CONSOLE_FONT_INFOEX()
    {
        public short X;
        public short Y;

        public COORD(short x, short y)
        {
        X = x;
        Y = y;
        }
        cbSize = Marshal.SizeOf(typeof(CONSOLE_FONT_INFOEX));
    }
    public int FontIndex;
    public short FontWidth;
    public short FontHeight;
    public int FontFamily;
    public int FontWeight;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
    public string FaceName;
    }

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
    private struct CONSOLE_FONT_INFOEX
    {
        public uint cbSize;
        public uint nFont;
        public COORD dwFontSize;
        public int FontFamily;
        public int FontWeight;

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string FaceName;
    }

You MUST set cbSize with Marshal.SizeOf using the instance of CONSOLE_FONT_INFO_EX.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

Minimum supported client: Windows Vista

// Untested, added during 1-pass copy & paste of windows console fuctions

Tips & Tricks:

Please add some!

Sample Code:

using System.Runtime.InteropServices;
using System;

Please add some!

namespace Win32test
{
    class ConsoleTest
    {
    [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
    extern static bool GetCurrentConsoleFontEx(
        IntPtr hConsoleOutput,
        bool bMaximumWindow,
        ref CONSOLE_FONT_INFOEX lpConsoleCurrentFont);

    private enum StdHandle
    {
        OutputHandle = -11
    }

    [DllImport("kernel32")]
    private static extern IntPtr GetStdHandle(StdHandle index);

    static void Main(string[] args)
    {
        // Instantiating CONSOLE_FONT_INFOEX and setting cbsize
        CONSOLE_FONT_INFOEX ConsoleFontInfo = new CONSOLE_FONT_INFOEX();
        ConsoleFontInfo.cbSize = (uint)Marshal.SizeOf(ConsoleFontInfo);

        GetCurrentConsoleFontEx(GetStdHandle(StdHandle.OutputHandle), false, ref ConsoleFontInfo);

        // Printing the results
        Console.WriteLine($"Font size is: x: {ConsoleFontInfo.dwFontSize.X} y: {ConsoleFontInfo.dwFontSize.Y}");
        Console.WriteLine($"Font name is: {ConsoleFontInfo.FaceName}");
        Console.WriteLine($"Fontfamily is: {ConsoleFontInfo.FontFamily}");
        Console.WriteLine($"Fontweight is: {ConsoleFontInfo.FontWeight}");
        Console.WriteLine($"Font index is: {ConsoleFontInfo.nFont}");
        Console.ReadKey();
    }

    [StructLayout(LayoutKind.Sequential)]
    private struct COORD
    {
        public short X;
        public short Y;

        public COORD(short x, short y)
        {
        X = x;
        Y = y;
        }
    }

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
    private struct CONSOLE_FONT_INFOEX
    {
        public uint cbSize;
        public uint nFont;
        public COORD dwFontSize;
        public int FontFamily;
        public int FontWeight;

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string FaceName;
    }
    }
}

Documentation

Please edit this page!

Do you have...

  • helpful tips or sample code to share for using this API in managed code?
  • corrections to the existing content?
  • variations of the signature you want to share?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).

 
Access PInvoke.net directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version
Revisions