如何判断用户是否通过双击EXE(或快捷方式)启动了我的控制台应用程序,或者是否已经打开了命令行窗口并在该会话中执行了我的控制台应用程序?如何确定如何启动控制台应用程序?
回答
您可能可以通过P /调用Win32 GetStartupInfo()函数来计算出结果。
[DllImport("kernel32", CharSet=CharSet.Auto)]
internal static extern void GetStartupInfo([In, Out] STARTUPINFO lpStartupInfo);
棒在你的“Program
”类此静态字段,以确保它运行的任何输出前:
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:\ull\path\to\app.exe"
(通过查看标题)做出响应。
我从win32 version of this question得到了主意。
我加入了第二场'静态布尔startedFromVisualStudio = \t \t \t \t!Console.IsOutputRedirected \t \t \t \t &&!Console.IsInputRedirected \t \t \t \t &&!Console.IsErrorRedirected \t \t \t \t && Environment.UserInteractive \t \t \t \t && Environment.CurrentDirectory == System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly()位置) \t \t \t \t && Console.CursorTop == 0 && Console.CursorLeft == 0 \t \t \t \t && Environment.GetCommandLineArgs()[0] .Contains(“vshost”);'当从VS启动时也等待按键 – JCH2k 2016-08-03 09:33:20
- 1. 如何在启动时启动控制台应用程序(!)? C#
- 2. 如何启用滚动Python控制台应用程序
- 3. 如何从控制台应用程序启动kdiff?
- 4. 如何启动和关闭控制台应用程序?
- 5. 如何确定前台应用程序是否是启动器?
- 6. 从控制台应用程序启动控制台应用程序
- 7. .Net无法启动控制台的控制台应用程序
- 8. 如何从Eclipse启动应用程序时启动java控制台?
- 9. 如何启动控制台进程
- 10. 如何在控制台应用程序
- 11. 如何从控制台应用程序
- 12. 如何在控制台应用程序
- 13. 如何启用可滚动控制台?
- 14. 如何从远程PowerShell控制台启动程序?
- 15. 如何:自动重新启动控制台应用程序。在.NET
- 16. 如何在我的控制台应用程序中启用鼠标滚动
- 17. 如何使用参数从终端启动控制台应用程序?
- 18. 如何使用C#控制台应用程序的参数启动本地VBScript?
- 19. 如何调用主要方法或重新启动应用程序控制台?
- 20. 在后台启动我的控制台应用程序
- 21. 启动后台Win32控制台应用程序
- 22. 如何从Windows控制台检查程序启动参数?
- 23. 如何从gui启动控制台程序?
- 24. 如何动态地或者控制台应用程序或Windows应用程序
- 25. 如何在作为控制台启动的应用程序中创建窗口?
- 26. 如何启动控制台应用程序并防止在最后关闭?
- 27. 如何在控制台应用程序中启动dbmonitor的mysqlmonitor实例
- 28. 如何重新启动在Windows中编写的控制台c应用程序?
- 29. 如何在Linux中从终端启动控制台应用程序?
- 30. 如何在ASP.NET MVC解决方案中启动控制台应用程序
[Win32控制台应用程序是否可以检测是否已从资源管理器运行?](http://stackoverflow.com/questions/510805/can-a-win32-console-application-detect-如果-IT-过气 - 运行 - 从 - - 探险家或否) – joshuapoehls 2010-08-20 01:25:16