如何判断用户是否通过双击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. .Net无法启动控制台的控制台应用程序
- 2. 如何从Eclipse启动应用程序时启动java控制台?
- 3. 如何启动控制台进程
- 4. 如何在控制台应用程序
- 5. 如何启用可滚动控制台?
- 6. 如何:自动重新启动控制台应用程序。在.NET
- 7. 如何调用主要方法或重新启动应用程序控制台?
- 8. 如何使用参数从终端启动控制台应用程序?
- 9. 启动后台Win32控制台应用程序
- 10. 在后台启动我的控制台应用程序
- 11. 如何从gui启动控制台程序?
- 12. 如何在作为控制台启动的应用程序中创建窗口?
- 13. 如何在ASP.NET MVC解决方案中启动控制台应用程序
- 14. 如何在控制台应用程序中启动dbmonitor的mysqlmonitor实例
- 15. 如何启动控制台应用程序并防止在最后关闭?
- 16. 如何在Linux中从终端启动控制台应用程序?
- 17. 如何重新启动在Windows中编写的控制台c应用程序?
- 18. 如何为部署在Tomcat上的应用程序启动rails控制台?
- 19. 如何阻止C#控制台应用程序自动关闭?
- 20. 如何启动tarantool控制台?
- 21. 如何自定义控制台的应用程序?
- 22. 如何获得控制台的进程id在C#控制台应用程序
- 23. 如何确定从ruby程序控制台字符宽度?
- 24. 终端如何控制自己启动的应用程序
- 25. 如何在Windows启动时控制Kiosk应用程序?
- 26. 如何从控制台应用程序运行程序?
- 27. 如何在后台运行.NET控制台应用程序
- 28. 如何在后台运行控制台应用程序(无UI)?
- 29. 在用户登录之前启动控制台应用程序
- 30. 无法使用xCode 4.4启动控制台应用程序
[Win32控制台应用程序是否可以检测是否已从资源管理器运行?](http://stackoverflow.com/questions/510805/can-a-win32-console-application-detect-如果-IT-过气 - 运行 - 从 - - 探险家或否) – joshuapoehls 2010-08-20 01:25:16