【发布时间】:2013-06-10 03:01:06
【问题描述】:
我有一个 winforms 应用程序。我想从命令行运行 .exe 并将输出从输出文本框之一重定向到命令行。我不想启动 winform 应用程序,只是在后台运行逻辑。
我尝试了这个帖子的建议
C# application both GUI and commandline
但是当我通过 cmd.exe 运行应用程序时,我没有在 cmd.exe 的命令行中看到任何 console.writeline 消息。谁能指导我做错了什么?
我有一个执行此逻辑的 if 语句:
if(args.Length >0)
{
Console.writeline("this has arguments");
new Mainform();
}
else
{
Application.EnableVisualStyles();
Application.Run(new MainForm());
}
else 部分仍然有效。但是,如果使用 cmd.exe 运行应用程序,或者当我使用属性 -> 调试 -> 命令行参数并在调试时为其提供运行参数时,if 部分没有任何反应。我不知道我做错了什么。
【问题讨论】:
-
将逻辑移动到单独的 dll 中,并从表单和控制台应用程序中使用该 dll
-
所以制作两个不同的应用程序?一个用于 Winforms,一个用于控制台?
-
没错。并且两个应用程序将使用相同的业务逻辑,这将独立于您正在使用的 UI
-
它不可见,因为 Winforms 应用程序没有控制台。 Pinvoke AllocConsole(不是 AttachConsole,输出混合在一起)。您的表单不可见,因为您忘记了 Application.Run()。
-
这就是我最终所做的,它奏效了。另一个问题:为了得到提示,我需要输入 System.Windows.Forms.SendKeys.SendWait("{ENTER}");有谁知道为什么?