2016-09-23 1 views
0

Während der Arbeit an einem Projekt von mir. Ich fand die Notwendigkeit, die normale Konsolenanwendung zu haben, um Zahlen zu ändern und sie auszugeben. Ich habe einen Beitrag gefunden, der das ziemlich einfach gemacht hat, aber es gibt nichts aus. Es öffnet die Konsolenanwendung und der Name ändert sich, aber es gibt keine Ausgabe.Xna schreibt nicht auf Konsole

Dies ist, was ich es zu öffnen verwenden, um

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

    private void UseConsole(object sender) 
    { 
     AllocConsole(); 
     Console.Title = "Output"; 
     Console.Write("hello world"); 
    } 

Wenn Sie wissen, was eine Ausgabe zu erhalten, könnte helfen. das wäre toll Danke schon sein

Dan

Antwort

-1

Ich hatte das gleiche Problem beim Versuch, eine Konsole mit meiner XNA/FNA Anwendung zu erstellen. Alle gefundenen gemeinsamen Lösungen haben nicht funktioniert: Die geschriebenen Konsolenzeilen wurden in das "Ausgabe" -Fenster von Visual Studio (Community) gedruckt, aber als die Anwendung gestartet wurde, indem das Spiel direkt (außerhalb von Visual Studio) ausgeführt wurde, das Konsolenfenster blieb leer. Die folgende Antwort auf eine ähnliche Frage war für mich: https://stackoverflow.com/a/34170767 von https://stackoverflow.com/users/1087922/zunair

den kopierten Code:

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!"); 
     } 
    } 
}