日期:2014-05-20  浏览次数:20816 次

C#写的桌面应用程序以命令行方式运行时如何在控制台下打印信息
我写了一个桌面应用程序,想让它既可以双击运行又支持命令行方式运行

于是我改写了下Main函数如下:
static   void   Main(string[]   args)  
{
if   (args.Length   ==   0)
{
Application.Run(new   PrintView());
}
else
{
System.Console.WriteLine( "hello ");
}
}

这样的话,双击没有问题,但在DOS下却打印不出信息,有人知道如何解决吗?

------解决方案--------------------
Dos下 要用控制台应用程序
------解决方案--------------------
如果是桌面程序而不是控制台程序,那么用
System.Console.WriteLine( "hello ");
是不会在那个"DOS"窗口中显示信息的.

只有控制台程序可以在DOS窗口里显示内容.
------解决方案--------------------
嘿,楼主,我不是说了吗?
你如果是建立的桌面应用程序,那么用System.Console是不会在DOS的窗口中显示信息的,
除非你建立控制台程序才可以.
------解决方案--------------------
在控制台应用程序中其实是可以建立Form窗体并可以使用Application.Run来运行程序的.

所以你新建立一个控制台程序,在这个程序里添加窗体并用Application.Run来运行这个程序就可以了.

或者你直接把你的桌面程序在项目属性里直接改成控制台项目就可以了.
------解决方案--------------------
会出来两个窗口
------>
这是必然的了!
------解决方案--------------------
双击运行部分不用改动,命令行方式的实现可以用process来启动一个新进程,该进程中运行控制台程序process的使用类似于下面的代码
Process p = new Process();
p.StartInfo.FileName = "cmd.exe ";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine(cmdText);
p.StandardInput.WriteLine( "exit ");
while(!p.HasExited)
{
p.WaitForExit();
}
p.Close();

你照着上面的例子再改一下试试吧