C# 检测应用程序是否在新控制台或现有控制台中启动

C# 检测应用程序是否在新控制台或现有控制台中启动,c#,console-application,C#,Console Application,如何检测我的控制台应用程序是从另一个控制台启动的,还是在启动时打开了一个新控制台 例如,如果在启动控制台时打开了一个新的控制台窗口,我希望该控制台具有一些自定义颜色,或者如果从另一个控制台启动,则保持一切原样。(与PowerShell.exe的功能非常相似)只要在新窗口(快捷方式、应用程序)中配置启动应用程序的内容,即可将命令行上的特定参数传递给可执行文件,以指示环境应着色 例如,myapp.exe-RunInNewConsole 另一个选项是使用以下方法确定您是否已经在控制台中运行: 这是一个

如何检测我的控制台应用程序是从另一个控制台启动的,还是在启动时打开了一个新控制台


例如,如果在启动控制台时打开了一个新的控制台窗口,我希望该控制台具有一些自定义颜色,或者如果从另一个控制台启动,则保持一切原样。(与PowerShell.exe的功能非常相似)

只要在新窗口(快捷方式、应用程序)中配置启动应用程序的内容,即可将命令行上的特定参数传递给可执行文件,以指示环境应着色

例如,
myapp.exe-RunInNewConsole

另一个选项是使用以下方法确定您是否已经在控制台中运行:


这是一个不错的黑客攻击,但它没有回答如何检测应用程序是从控制台启动的,还是它自己创建的console@MikeDinescu:为什么不呢?如果打开控制台窗口并键入myapp.exe,则没有命令行参数。如果从“开始”菜单中选择快捷方式,则快捷方式将使用startup参数进行配置,并打开一个新窗口。如果我从另一个应用程序中启动该应用程序,启动命令将使用startup参数执行,并打开一个新窗口。如果我知道该应用程序是从快捷方式启动的,则此操作将有效。我不知道。例如,用户可能只是在Windows资源管理器中双击.exe。而且,PowerShell.exe似乎并不是这样做的。所以必须有更好的方法。@decf当我从windows资源管理器启动powershell时,没有任何自定义颜色。快捷方式在“颜色”选项卡中定义了自定义颜色。@David奇怪,这里有。如果我真的赢了+R并输入“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe”,我会得到一个背景为蓝色的窗口等,而据我所知,这似乎不是一个快捷方式。在副本中有人为它写了C代码。是的,我注意到了。无论你搜索了多少,有时正确的页面似乎都不会出现。感谢您的链接和您的努力。:)
    [DllImport("kernel32.dll")]
    static extern bool AttachConsole(int dwProcessId);

    private static bool IsRunningInConsole()
    {
        return AttachConsole(-1);
    }