不要写到控制台

本文关键字:控制台 | 更新日期: 2023-09-27 18:08:34

当我在做一个项目的时候。我发现需要使用正常的控制台应用程序来更改数字并将其发送出去。我发现了一个帖子,使这很容易,但它不输出任何东西。它打开控制台应用程序并更改名称,但没有输出。

这是我打开它的方式

    [DllImport("kernel32")]
    static extern bool AllocConsole();
    private void UseConsole(object sender)
    {
        AllocConsole();
        Console.Title = "Output";
        Console.Write("hello world");
    }

如果你知道什么可能有助于得到一个输出。那太好了由于已经

不要写到控制台

我在尝试用XNA/FNA应用程序创建控制台时遇到了同样的问题。所有常见的解决方案都不起作用:编写的控制台行被打印到Visual Studio (Community)的"输出"窗口中,但当应用程序通过直接执行游戏(在Visual Studio之外)启动时,控制台窗口仍然是空的。下面一个类似问题的答案对我很有用:https://stackoverflow.com/a/34170767 by https://stackoverflow.com/users/1087922/zunair

复制的代码:

using System;   
using System.Windows.Forms;   
using System.Text;   
using System.IO;   
using System.Runtime.InteropServices;   
using Microsoft.Win32.SafeHandles;   
namespace WindowsApplication   
{   
    static class Program   
    {   
        [DllImport("kernel32.dll",   
            EntryPoint = "GetStdHandle",   
            SetLastError = true,   
            CharSet = CharSet.Auto,   
            CallingConvention = CallingConvention.StdCall)]   
        private static extern IntPtr GetStdHandle(int nStdHandle);   
        [DllImport("kernel32.dll",   
            EntryPoint = "AllocConsole",   
            SetLastError = true,   
            CharSet = CharSet.Auto,   
            CallingConvention = CallingConvention.StdCall)]   
        private static extern int AllocConsole();   
        private const int STD_OUTPUT_HANDLE = -11;   
        private const int MY_CODE_PAGE = 437;   
        static void Main(string[] args)   
        {   
            Console.WriteLine("This text you can see in debug output window.");   
            AllocConsole();   
            IntPtr stdHandle=GetStdHandle(STD_OUTPUT_HANDLE);   
            SafeFileHandle safeFileHandle = new SafeFileHandle(stdHandle, true);   
            FileStream fileStream = new FileStream(safeFileHandle, FileAccess.Write);   
            Encoding encoding = System.Text.Encoding.GetEncoding(MY_CODE_PAGE);   
            StreamWriter standardOutput = new StreamWriter(fileStream, encoding);   
            standardOutput.AutoFlush = true;   
            Console.SetOut(standardOutput);   
            Console.WriteLine("This text you can see in console window.");   
            MessageBox.Show("Now I'm happy!");   
        }   
    }   
}