不要写到控制台
本文关键字:控制台 | 更新日期: 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!");
}
}
}