我们在创建 C# 的console工程时, 可以很简单的使用 Console.writeline() 等函数将输出送到控制台显示. 但是在我们创建winform工程时, 使用Console.writeline()等函数缺不能直接将结果送到控制台显示.
虽然Console.writeline()等函数可以把结果发送到调试环境的output显示,但是当我们所创建的应用程序需要在命令行下工作时, 我们希望在cmd.exe dos串口下,可以直接调用我们的应用程序并传递参数, 例如:
A.exe param1,param2 .. 然后我们的执行结果也通过当前的命令行窗口返回.
总而言之,我们是希望在winform工程里把结果输出到控制台上.
在C#中通过调用api函数: AttachConsole()可以把当前应用程序的控制台连接到它的父进程上.
如下红色代码, 可以实现输出到控制台, 但是当有输出重定向需求时,无法实现:例如: a.exe > a.text.
static class Program {
[DllImport("kernel32.dll")]
static extern bool AttachConsole(int dwProcessId);
private const int ATTACH_PARENT_PROCESS = -1;
[STAThread]
static void Main(string[] args)
{
// redirect console output to parent process;
// must be before any calls to Console.WriteLine()
AttachConsole(ATTACH_PARENT_PROCESS);
Console.WriteLine("This is a test");
//..... add code here.
}
}
|