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

Tagged as

Go to top

Attaching a Console to a WinForms application

, 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(); ...
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)

Share

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
Web03 | 2.8.140926.1 | Last Updated 25 Feb 2012
Article Copyright 2012 by Andreas Gieriet
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid