2016-07-14 163 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. 將所有內容寫入日誌文件。

希望它有用。

相關問題