0
Q
窗體和控制檯
A
回答
0
您需要調用幾個win32app調用,特別是allocconsole。這裏有一個msdn的帖子和一些示例代碼。
0
你需要做一個小的P/Invoke:
添加適當的方法:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using StackOverflow.Extensions;
using System.Runtime.InteropServices;
using System.IO;
using Microsoft.Win32.SafeHandles;
namespace StackOverflow
{
public partial class FormMain : Form
{
[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();
// Some constants
private const int STD_OUTPUT_HANDLE = -11;
private const int MY_CODE_PAGE = 437;
public FormMain()
{
InitializeComponent();
}
public void PrepareConsole()
{
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);
}
private void button1_Click(object sender, EventArgs e)
{
// Console was not visible before this button click
Console.WriteLine("This text is written to the console that just popped up.");
MessageBox.Show("But we're still in a Windows Form application.");
}
}
}
相關問題
- 1. 控制檯的Windows窗體
- 2. C#中的控制檯和Windows窗體#
- 3. C#Windows窗體.Net和DOS控制檯
- 4. 連接一個窗體與控制檯
- 5. .NET:Windows窗體+控制檯/合閘閉鎖
- 6. Process.WaitForExit()在控制檯VS Windows窗體
- 7. 產生窗體(Windows窗體)的控制檯應用程序?
- 8. 在窗體窗體應用程序控制臺
- 9. 將控制檯appender添加到log4net中的窗體窗體
- 10. Windows窗體和控制檯之間的溝通
- 11. QML打開GUI窗口和控制檯
- 12. 更新和多個控制檯窗口
- 13. printf到控制檯窗口和文件?
- 14. RStudio拆分控制檯和源窗格
- 15. 控制PowerShell控制檯窗口位置
- 16. 如何創建窗體模式到控制檯窗口
- 17. 隱藏Windows窗體應用程序中的控制檯窗口
- 18. 如何關閉窗體後關閉控制檯窗口
- 19. 用javaw控制檯窗口?
- 20. 其他控制檯窗口
- 21. .NET控制檯窗口
- 22. Unkillable控制檯窗口
- 23. 隱藏控制檯窗口
- 24. 隱藏控制檯窗口
- 25. Drag'n'drop到控制檯窗口
- 26. 檢測控制檯窗口?
- 27. 激活控制檯窗口
- 28. Visual Studio控制檯窗口
- 29. 控制檯窗口關閉
- 30. AX 2012窗體控制和計算
我一直想知道爲什麼的CreateFile使用SafeFileHandle有返回值,但GetStdHandle沒有。 – Rahly 2014-01-06 02:06:26
它一直在爲我工作,但突然停下來,不知道爲什麼。其他人是否有反饋? – WSK 2016-08-18 16:41:49