Csharp/C#教程:C#Windows控制台应用程序如何判断它是否以交互方式运行分享


C#Windows控制台应用程序如何判断它是否以交互方式运行

用C#编写的Windows控制台应用程序如何确定它是在非交互式环境中调用(例如从服务或作为计划任务)还是从能够进行用户交互的环境(例如命令提示符或PowerShell)调用?

Environment.UserInteractive属性

要确定.NET应用程序是否在GUI模式下运行:

bool is_console_app = Console.OpenStandardInput(1) != Stream.Null; 

我没有测试过,但Environment.UserInteractive看起来很有前景。

如果您要做的就是确定在程序退出后控制台是否会继续存在(例如,您可以在程序退出之前提示用户按Enter ,那么您所要做的就是检查您的进程是否是连接到控制台的唯一进程。 如果是,那么当您的进程退出时,控制台将被销毁。 如果控制台上附加了其他进程,则控制台将继续存在(因为您的程序不是最后一个)。

例如*:

 using System; using System.Runtime.InteropServices; namespace CheckIfConsoleWillBeDestroyedAtTheEnd { internal class Program { private static void Main(string[] args) { // ... if (ConsoleWillBeDestroyedAtTheEnd()) { Console.WriteLine("Press any key to continue . . ."); Console.ReadKey(); } } private static bool ConsoleWillBeDestroyedAtTheEnd() { var processList = new uint[1]; var processCount = GetConsoleProcessList(processList, 1); return processCount == 1; } [DllImport("kernel32.dll", SetLastError = true)] static extern uint GetConsoleProcessList(uint[] processList, uint processCount); } } 

(*)改编自此处的代码。

上述就是C#学习教程:C#Windows控制台应用程序如何判断它是否以交互方式运行分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1022370.html

(0)
上一篇 2022年1月7日
下一篇 2022年1月7日

精彩推荐