繁体   English   中英

如何暂停C#控制台应用程序(仅在由用户运行时)

[英]How can I pause a C# Console application (only when being run by a user)

如何在用户运行时暂停C#控制台应用程序?

我在堆栈溢出中搜索了类似的问题,这些问题建议学习如何正确调试,使用readline等,但是这些问题都没有涉及您的流程可能由需要继续过去(即不暂停,让用户阅读屏幕)。

如何确定控制台是交互式运行还是通过脚本运行?

如果这是Linux系统上的bash,我可以做类似的事情

https://www.gnu.org/software/bash/manual/html_node/Is-this-Shell-Interactive_003f.html

使用某些命令行参数将是最简单的解决方案。 例如,如果程序使用命令行参数“ -automatic”运行,则可以不停止而直接运行。 如果没有这样的参数,程序将以交互模式运行,并且需要用户输入。

这是许多命令行实用程序使用的非常标准的方法。

您需要检查是否有人以交互用户身份登录,但这主要是用于服务。 自从您提到这样的术语以来,某些“自动化”系统可能会伪造已登录的用户。

在以下位置有一些建议: 检查当前是否没有用户登录Windows。

可能最简单的方法(尤其是如果您不想依赖WMI API)是通过P / Invoke调用枚举用户会话,如下所示: http : //www.pinvoke.net/default.aspx/wtsapi32/WTSEnumerateSessions html的

如果未交互运行控制台应用程序,则Console.OpenStandardInput(1)将返回Stream.Null。

    private static void pause()
    {
        if (Console.OpenStandardInput(1) != Stream.Null)
        {
            Console.Out.WriteLine("Press any key to continue");
            Console.ReadKey();
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM