所以我有一个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
第二行应最后。为什么在调用下一个提示后打印到控制台?
答案 0 :(得分:0)
您的应用的Output type
标记为Windows Application
,但应该是Console Application
。右键单击您的项目并选择Properties,然后转到Applications选项卡。
答案 1 :(得分:0)
您创建的是静态Console Application
,可以打开Windows Forms Application
的实例。但是,您可能会将应用程序的输出类型设置为Windows Forms Application
而不是正确的Console Application
。一旦更正输出类型,此问题就会消失。