作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我从现有的命令行窗口运行我的 Program.exe
,那么当它完成并退出时,控制台输出仍然存在并且可以查看。
如果我只是双击我的 Program.exe
,那么它将打开一个新的命令行窗口,用于控制台输出...但是当我的 exe 完成时,该窗口将关闭,并采取用它输出。
在后一种情况下,为了防止输出日志丢失,我可能希望 Main()
的最后两行是 Console.WriteLine("Press any key to exit "); Console.ReadKey();
但如果我在前一种情况下这样做,那就有点烦人了。
有什么方法可以检测这两种情况之间的差异,以便我可以有条件地“等待用户说我可以关闭”......只有在必要时才这样做吗?
最佳答案
如果您想检查您的应用程序是否从 .NET 中的命令行启动,您可以使用 Console.GetCursorPosition()
。之所以可行,是因为当您从命令行启动它时,光标会从初始点 ((0, 0)
) 移开,因为您在终端中输入了一些内容(应用程序)。您可以通过相等性检查来做到这一点:
// .NET 6
class Program
{
public static void Main(string[] args)
{
if (Console.GetCursorPosition() == (0, 0))
{
//something GUI
}
else
{
//something not GUI
}
}
}
注意:您必须将输出类型设置为控制台应用程序,因为其他输出类型会使 Console.GetCursorPosition()
抛出异常。
关于C# 控制台应用程序 : Is there a way to detect whether the exe was run from a command line or not?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70997254/
我是一名优秀的程序员,十分优秀!