我需要为我的WPF项目添加命令行选项,我目前有一些工作,但它不是很好。我需要一个更专业的解决方案。
要编写开始和停止,请执行以下操作:
AttachConsole(-1);
Console.WriteLine("Start");
System.Threading.Thread.Sleep(1000);
Console.WriteLine("Stop");
产生输出:
C:\Work>TestWriteCLI.exe -h
C:\Work>Start
Stop
这有几个问题:
C:\Work>
,我不想这样,我希望它直接打印到“控制台”。这是我想要实现的输出:
C:\Work>TestWriteCLI.exe -h
Start
Stop
C:\Work>
此处的其他类似问题提供了我不喜欢的解决方案,例如,我不想创建新的控制台窗口。我有一个控制台,我想让它运行它控制台没有打开一个新的,显示东西,然后关闭它,并回到我原来的控制台。
我也不想将我的项目更改为命令行项目。
我的项目是一个WPF项目,它应该以命令行项目的正常方式处理命令行选项,如果可能的话,使用WPF方法。
非常感谢您对此的帮助。
非常感谢
答案 0 :(得分:1)
您应该使用AllocConsole()
中的Kernel32 assembly
并关闭控制台,您可以使用FreeConsole()
。
导入课程中的方法
[DllImport("Kernel32")]
public static extern void AllocConsole();
[DllImport("Kernel32")]
public static extern void FreeConsole();
并以这种方式使用它们 -
AllocConsole();
Console.WriteLine("Start");
System.Threading.Thread.Sleep(1000);
Console.WriteLine("Stop");
FreeConsole();
答案 1 :(得分:0)
对于您的第一个问题,只需使用start
命令运行可执行文件,并选择/W
或/Wait
作为选项,如文档here所示:
C:\Work>start /W TestWriteCLI.exe -h
对于第二个问题,请在代码末尾添加以下行:
System.Windows.Forms.SendKeys.SendWait("{ENTER}");