Click here to Skip to main content
Click here to Skip to main content
Alternative Tip

Attaching a Console to a WinForms application

By , 25 Feb 2012
Rate this:
Please Sign up or sign in to vote.
To not having spoiled the client code with #if DEBUG, you might use the following:
 
[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    try
    {
        Debugging.DebugSetupConsole();
        Application.Run(new FormMain());
    }
    finally
    {
        Debugging.DebugCleanupConsole();
    }
}
 
and the Debugging class:
 
public abstract partial class Debugging
{
    private abstract partial class NativeMethods
    {
        // http://msdn.microsoft.com/en-us/library/ms681944(VS.85).aspx
        [DllImport("kernel32.dll", SetLastError = true)]
        internal static extern int AllocConsole();
 
        // http://msdn.microsoft.com/en-us/library/ms683150(VS.85).aspx
        [DllImport("kernel32.dll", SetLastError = true)]
        internal static extern int FreeConsole();
    }
 
    private static bool _consoleOk = false;
    [Conditional("DEBUG")]
    public static void DebugSetupConsole()
    {
        _consoleOk = NativeMethods.AllocConsole() == 0;
        Console.WriteLine("Debug Console");
    }
    [Conditional("DEBUG")]
    public static void DebugCleanupConsole()
    {
        if (_consoleOk) 
        {
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
 
            NativeMethods.FreeConsole();
        }
    }
}

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Andreas Gieriet
Founder eXternSoft GmbH
Switzerland Switzerland
I feel comfortable on a variety of systems (UNIX, Windows, cross-compiled embedded systems, etc.) in a variety of languages, environments, and tools.
I have a particular affinity to computer language analysis, testing, as well as quality management.
 
More information about what I do for a living can be found at my LinkedIn Profile and on my company's web page (German only).
Follow on   LinkedIn

Comments and Discussions

 
-- There are no messages in this forum --
| Advertise | Privacy | Mobile
Web01 | 2.8.140415.2 | Last Updated 25 Feb 2012
Article Copyright 2012 by Andreas Gieriet
Everything else Copyright © CodeProject, 1999-2014
Terms of Use
Layout: fixed | fluid