Mar*_*And 0 .net c# command-line-interface winforms
我有一个带有工作 GUI 的 Windows 窗体应用程序。但是,我希望该应用程序能够在命令行界面以及常规 GUI 应用程序中启动和使用。当应用程序在 CLI 中启动时,不应使用 GUI,而是将相关信息写入 CLI 应用程序。我需要做的是一种检测应用程序(其 exe 文件)是在 CLI 应用程序(例如常规 windows CMD)中启动还是以正常方式启动(例如单击文件资源管理器中的 exe 文件或使用)的方法桌面快捷方式。
最好在应用程序的主要方法中进行检测,例如
static class Program
{
[STAThread]
static void Main()
{
//if(application not started in a CLI-application)
Application.Run(new DriverToolApplicationContext());
//else
//Console.writeLine("Application started in CLI-application");
}
}
Run Code Online (Sandbox Code Playgroud)
如何最好地实施这种检测?我最好不想在 main 方法中放置任何参数。
我认为你会在没有争论的情况下挣扎;我能想到的大多数应用程序都有这个双模式操作包作为两个 exe,一个 gui 一个和一个命令行一个(一个可能使用另一个)
这确实是拥有规则的最简单方法:
你当然可以改变这些,也许你会有:
我提出这个建议主要是因为,要作为命令行应用程序真正有用,应用程序可能需要从命令行获取参数,因此您可以使用它们的存在或不存在来推断应用程序的启动位置。当然,它并不完美 - 快捷方式可以“从 Windows 开始”,但传递的参数将使我的应用程序认为它是命令行,但我要说的是,通常这并不重要,因为这个问题不是这么多关于“它从哪里开始?” 如“应用程序是否有足够的信息来完成其工作,还是必须向用户询问信息?”