How can you determine how a console application was launched?(如何确定控制台应用程序是如何启动的?)
问题描述
如何判断用户是否通过双击 EXE(或快捷方式)启动了我的控制台应用程序,或者他们是否已经打开了命令行窗口并在该会话中执行了我的控制台应用程序?
How can I tell whether the user launched my console application by double-clicking the EXE (or a shortcut), or whether they already had a command line window open and executed my console app within that session?
推荐答案
将此静态字段粘贴到您的Program
"类中,以确保它在任何输出之前运行:
Stick this static field in your "Program
" class to ensure it runs before any output:
static bool StartedFromGui =
!Console.IsOutputRedirected
&& !Console.IsInputRedirected
&& !Console.IsErrorRedirected
&& Environment.UserInteractive
&& Environment.CurrentDirectory == System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location)
&& Console.CursorTop == 0 && Console.CursorLeft == 0
&& Console.Title == Environment.GetCommandLineArgs()[0]
&& Environment.GetCommandLineArgs()[0] == System.Reflection.Assembly.GetEntryAssembly().Location;
这有点矫枉过正/偏执,但从资源管理器开始,而不响应 cls && 之类的东西app.exe
(通过检查完整路径)甚至 cls &&"f:ullpath oapp.exe"
(通过查看标题).
This is a little bit overkill/paranoid, but picks up being started from Explorer while not responding to things like cls && app.exe
(by checking for the full path) or even cls && "f:ullpath oapp.exe"
(by looking at the title).
我从 win32 版本的这个问题.
这篇关于如何确定控制台应用程序是如何启动的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何确定控制台应用程序是如何启动的?
基础教程推荐
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- c# Math.Sqrt 实现 2022-01-01
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30
- 将 XML 转换为通用列表 2022-01-01
- rabbitmq 的 REST API 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01
- SSE 浮点算术是否可重现? 2022-01-01
- MS Visual Studio .NET 的替代品 2022-01-01
- 如何激活MC67中的红灯 2022-01-01
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01