• 如何为窗体应用程序显示控制台


          目的是为了显示Console.Write()信息以便调试(VS的output窗口是可以显示的,但是,实际情况是,脱离了VS的, 远程调试?forget it!反正是脱离了啦) 

    发现,其实win32 是提供了“为进程分配控制台”这样的方法的,这就是: 

            /// <summary>
            
    /// Allocates a new console for the calling process
            
    /// </summary>
            
    /// <returns>If the function succeeds, return true</returns>
            [DllImport("kernel32")]
            
    static extern bool AllocConsole();

     调用该方法的进程的标准输入流和输出流都将默认地与这个方法创建的控制台关联起来,也就是说调用Console.xxx()方法都将是针对这个控制台了。

    OK,简单地包装一下:

    public class ConsoleWindow2
        {
            
    public static IntPtr CreateConsole()
            {
                var console 
    = new ConsoleWindow2();
                
    return console.Hwnd;
            }

            
    public IntPtr Hwnd { getprivate set; }

            
    public ConsoleWindow2()
            {
                Initialize();
            }

            
    public void Initialize()
            {
                Hwnd 
    = GetConsoleWindow();

                
    // Console app
                if (Hwnd != IntPtr.Zero)
                {
                    
    return;
                }

                
    // Windows app
                AllocConsole();
                Hwnd 
    = GetConsoleWindow();
            }

            
    #region Win32

            [DllImport(
    "kernel32")]
            
    static extern IntPtr GetConsoleWindow();

            [DllImport(
    "kernel32")]
            
    static extern bool AllocConsole();


            
    #endregion
        }

    试验一下:

    如果需要更多的控制,可以参考下面这些和控制台相关的API:

    some APIs about console
  • 相关阅读:
    《iOS-LLVM框架》
    《尚硅谷大数据之韩顺平Scala》
    《高性能Java-缓存、序列化、String》
    《高性能Java-集合》
    《尚硅谷大数据课程Spark+Spark高级(内存解析+性能调优)》
    《Spatial Transformer Networks》
    《Relational inductive biases, deep learning, and graph networks》
    《[论文笔记]Relational inductive biases, deep learning, and graph network》
    SSD:TensorFlow中的单次多重检测器
    YOLO: 3 步实时目标检测安装运行教程 [你看那条狗,好像一条狗!]
  • 原文地址:https://www.cnblogs.com/chuncn/p/1508011.html
Copyright © 2020-2023  润新知