2016-07-25 77 views
0

我有一个C#控制台应用程序,我正在运行它的输出类型设置为“Windows应用程序”,以防止在正常使用过程中看到控制台。但是,我希望可以选择将程序作为控制台应用程序随意运行,以防用户想要排除故障并查看控制台的输出。替代运行控制台应用程序作为EXE和WinExe

是否可以将命令行参数传递给可执行文件,以根据用户的需求以“控制台”模式或“Windows应用程序”模式运行应用程序?如果没有,如果应用程序将显示控制台,还有其他方式可以随时更改吗?

+1

可能想看看这里:http://stackoverflow.com/questions/472282/show-console-in-windows-application – Styxxy

+0

AllocConsole()没有用。创建另一个控制台模式项目,并让其Main()方法使用Process.Start + WaitForExit来启动您的winapp.exe。当你将这个小程序重命名为winapp.com时,你就无法区分它。 –

回答

0

不,你不能。控制台应用程序和WinForms应用程序之间存在着根本性的差异。应用程序编译完成后,它不能在运行时更改。

0

我认为你有一个X-Y Problem。根本问题是您希望用户能够运行一个控制台或WinForms程序,它们都执行相同的操作。一种解决方案是将一个程序作为两者运行,但正如@ roryap指出的那样,这是不可能的。

第二种解决方案是将程序的业务逻辑放入单独的库中。然后你可以编写一个访问这个库的控制台程序和一个访问这个库的WinForms GUI。用户然后决定运行哪个程序。这是将应用程序分成多个层的可靠方法。我建议你走这条路。你会发现你的面向用户的图层(控制台,WinForms)很小。将来,如果你想创建一个Web前端或者一个WPF前端,你只需要编写前端部分,业务逻辑层就不会改变。

相关问题