2016-07-14 161 views
-3

我想打开窗体窗体应用程序内的控制台,以便我可以调整事情的道路上,我目前正在使用的游戏引擎。不幸的是,由于某种原因,我不能让控制台使用此代码打开:在窗体窗体应用程序控制台

private void GameWind_Load(object sender, EventArgs e) 
{ 
    AllocConsole(); 
} 
//allows the game console to be seen during execution 
[DllImport("kernel32.dll", SetLastError = true)] 
[return: MarshalAsAttribute(UnmanagedType.Bool)] 
static extern bool AllocConsole(); 

道歉,在保持我的评论,但无论我做什么,我根本无法得到这个工作。我至少重复了5次,试图找到一个错字,我甚至尝试了一些调出控制台的其他方法,到目前为止没有任何工作。我觉得我错过了一些东西,但我根本无法把它放在手上。如果任何人都可以找到我的代码有问题,请告诉我。

+1

你还没有解释你在发布的代码中遇到的问题。 *我无法打开控制台*没有用,而iehter是*迄今为止没有任何作品*。它以什么方式*不工作*?什么**特别**我们可以帮你在这里? (而且,作为一个几乎牢不可破的规则,你必须在使用它们之前声明函数**,而不是之后。你试过看[PInvoke](http://pinvoke.com)吗?) –

+0

另外,你有没有尝试阅读[AllocConsole文档](https://msdn.microsoft.com/en-us/library/windows/desktop/ms681944(v = vs.85).aspx),它解释如果函数失败(返回0 ),你可以使用GetLastError来找出原因?并且该AllocConsole不会返回'bool',而是一个控制台的句柄,然后您可以使用该句柄与该控制台进一步交互?首先查看[控制台](https://msdn.microsoft.com/en-us/library/windows/desktop/ms682055(v = vs.85).aspx)可能会更好。 –

+0

我没有看到你的代码有什么问题。你是否检查'AllocConsole'的返回值并调用'Marshal.GetLastWin32Error'来查看问题是什么?我编写了一系列有关使用C#中的控制台API的文章。不幸的是,这些文章不再在线提供,但您可以从我的网站下载完整的源代码。 http://www.mischel.com/pubs/consoledotnet.zip。你要找的是JConsole.cs和WinCon.cs文件。请注意,解决方案和项目文件非常陈旧,但是如果将代码包含在新解决方案中,代码仍会编译。 –

回答

-2

我真的不明白Windows窗体中的Console是什么意思。

您是否希望将控制台窗口附加到Windows窗体上,如其他控件Button,TextBox等。或者您只是想在运行应用程序时显示它?

我有一些想法:

  1. 使用RichTextBox控件。
  2. 将项目类型设置为控制台应用程序。在这种情况下,Windows窗体和控制台将在您运行应用程序时显示。
  3. 改写为Debug窗口。
  4. 将所有内容写入日志文件。

希望它有用。

相关问题