我有一个C#控制台应用程序项目,其中输出类型设置为“ Windows应用程序”。这样一来,控制台不会在程序启动时闪烁。
但是,我也想允许一个帮助命令行参数,如果您使用“ /?”从命令行运行该程序,它将显示有关该程序的详细信息。作为一个论点。
有没有一种方法可以让程序作为Windows应用程序正常运行,但是如果传递了help参数,则显示一个控制台?
编辑-阅读此问题的答案和类似的答案后(此问题假定您正在使用控制台应用程序输出类型运行),我正在使用此解决方案。
[DllImport(Kernel32_DllName)]
private static extern bool AllocConsole();
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
const int SW_HIDE = 0;
const int SW_SHOW = 5;
static void Main(string[] args)
{
if(args.Contains("/?"))
{
AllocConsole();
Console.WriteLine("helpText");
Console.ReadLine();
var handle = GetConsoleWindow();
//Hides console
ShowWindow(handle, SW_HIDE);
}
}
我没有找到一种完全按照您的要求进行操作的方法,但是您可以根据输入内容打开一个控制台。例如:
class Program
{
private const string Kernel32_DllName = "kernel32.dll";
[DllImport(Kernel32_DllName)]
private static extern bool AllocConsole();
static void Main(string[] args)
{
if (args[0] == "/")
{
AllocConsole();
Console.WriteLine("Details");
Console.ReadKey();
//cases and such for your menu options
}
这将打开一个控制台,如果项目的输出类型是Windows应用程序,则在运行命令后加上/即可使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句