Winforms输出到命令行
本文关键字:命令行 输出 Winforms | 更新日期: 2023-09-27 18:18:20
我有一个winforms应用。我想从命令行运行.exe,并将其中一个输出文本框的输出重定向到命令行。我不想启动winform应用程序,只是在后台运行逻辑。
我尝试了这个线程的建议
c#应用程序GUI和命令行
但是我没有看到我的控制台。当我通过cmd.exe运行应用程序时,在cmd.exe的命令行中写入消息。谁能告诉我哪里做错了吗?
我有一个if语句执行这个逻辑:
if(args.Length >0)
{
Console.writeline("this has arguments");
new Mainform();
}
else
{
Application.EnableVisualStyles();
Application.Run(new MainForm());
}
else部分仍然有效。但是,如果部分使用cmd.exe来运行应用程序,或者当我使用properties ->debug->命令行参数并在调试时给它提供参数时,什么也不会发生。我不知道我做错了什么。
我想你创建了你的Windows Forms project
并粘贴了代码?如果是这样,它就行不通了。你必须创建你的Console project
,这里是我测试过的代码,像一个魅力,除了当表单显示(GUI模式)控制台仍然在那里,关闭控制台也会关闭你的表单:
class Program
{
static void Main(string[] args)
{
if (args.Length == 0)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
else //Process command lines
{
Console.WriteLine("Please enter some command.");
string cmd = Console.ReadLine();
Console.WriteLine("You entered: " + cmd);
}
}
}
因为Console project
不会自动为您添加对System.Windows.Forms.dll
的引用,所以您必须手动这样做才能在该控制台项目中创建表单。关键是您在Winforms project
中应用了代码,而它应该在Console project
中。我知道只有一种方法可以在winforms应用程序中显示控制台窗口正在运行cmd.exe
,但这将显示一个新的控制台窗口,而不是现有的一个,您正在使用它来运行您的应用程序。