【发布时间】:2014-04-09 16:06:23
【问题描述】:
我想检测我的应用程序是显示自己的控制台窗口还是在另一个控制台中运行(例如,作为批处理文件的一部分)。我知道这可能发生的两种方式是从资源管理器启动应用程序或从 Visual Studio 执行应用程序。
我想这样做的原因是,如果应用程序显示了自己的窗口,我可以让应用程序在运行后暂停,否则它可能是批处理脚本的一部分,它应该干净地退出。
这可能吗?
【问题讨论】:
-
检查父进程。当从批处理文件(或控制台窗口)执行时,它将 cmd.exe 作为父级,但从 shell 运行时不会。顺便说一句,当来自 VS IMO VS 负责保持该窗口打开时,应用程序本身并不知道这一点。
-
VS 不会让父窗口保持打开状态(根据我对 2005 和 2008 版本的经验)。
-
VS 只会在不调试 (Ctrl+F5) 时保持父窗口打开。当您调试 (F5) 时,它会在没有您自己的处理代码后立即关闭。