Console.Write在下一个命令提示符后打印

时间:2014-09-03 19:09:15

标签: c# winforms command-line console

所以我有一个Windows窗体,需要也可以从控制台运行(并默默地)。

using System;
using System.Windows.Forms;

namespace Clear {
    static class Program {
        [System.Runtime.InteropServices.DllImport("kernel32.dll")]
        private static extern bool AttachConsole(int pid);
        [System.Runtime.InteropServices.DllImport("kernel32.dll")]
        private static extern bool AllocConsole();

        /// <summary>
        ///     Main
        /// </summary>
        /// <param name="args"></param>
        [STAThread]
        static int Main(string[] args) {
            if (args.Length == 0) {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new ClearGui());
            } else if (args[0].Contains("help")) {
                if (!AttachConsole(-1)) { // Attach to an parent process console
                    AllocConsole(); // Alloc a new console
                }
                Console.WriteLine("\n\nsyntax: \"" + AppDomain.CurrentDomain.FriendlyName + "\" /s");
            } else if (Char.ToLower(args[0][1]).Equals('s')) {
                Console.WriteLine(ClearGui());
            }
            return 0;
        }
    }
}

问题是,当你从CMD运行它时你得到这样的东西:

C:\Users\Me>clear.exe help

C:\Users\Me>

syntax: "clear.exe" /s

第二行应最后。为什么在调用下一个提示后打印到控制台?

2 个答案:

答案 0 :(得分:0)

您的应用的Output type标记为Windows Application,但应该是Console Application。右键单击您的项目并选择Properties,然后转到Applications选项卡。

答案 1 :(得分:0)

您创建的是静态Console Application,可以打开Windows Forms Application的实例。但是,您可能会将应用程序的输出类型设置为Windows Forms Application而不是正确的Console Application。一旦更正输出类型,此问题就会消失。