WPF显示命令行选项

时间:2013-12-04 19:16:47

标签: c# wpf command-line

我需要为我的WPF项目添加命令行选项,我目前有一些工作,但它不是很好。我需要一个更专业的解决方案。

要编写开始和停止,请执行以下操作:

AttachConsole(-1);
Console.WriteLine("Start");
System.Threading.Thread.Sleep(1000);
Console.WriteLine("Stop");

产生输出:

C:\Work>TestWriteCLI.exe -h

C:\Work>Start
Stop

这有几个问题:

  1. 运行exe后,在其中创建了一个新行C:\Work>,我不想这样,我希望它直接打印到“控制台”。
  2. 显示“停止”后,程序只在那里等待,等待按下“回车”,我也不想这样,我只想让它退出。
  3. 这是我想要实现的输出:

    C:\Work>TestWriteCLI.exe -h
    Start
    Stop
    C:\Work>
    

    此处的其他类似问题提供了我不喜欢的解决方案,例如,我不想创建新的控制台窗口。我有一个控制台,我想让它运行它控制台没有打开一个新的,显示东西,然后关闭它,并回到我原来的控制台。

    我也不想将我的项目更改为命令行项目。

    我的项目是一个WPF项目,它应该以命令行项目的正常方式处理命令行选项,如果可能的话,使用WPF方法。

    非常感谢您对此的帮助。

    非常感谢

2 个答案:

答案 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}");