2014-10-10 4 views
4

Как определить, запущено ли консольное приложение с другой консоли или открыта ли консоль при запуске?Обнаружение, если приложение было запущено в новой или существующей консоли

Например, если я хочу, чтобы консоль имела пользовательские цвета, если она открыла новое окно консоли при ее запуске или просто оставила все как есть, если была запущена с другой консоли. (Как, например, PowerShell.exe)

+0

В дублируют кто-то написал C# код для него [здесь] (http://stackoverflow.com/a/12356147/188246). –

+1

Да, я заметил. Независимо от того, сколько вы ищете, иногда правильная страница, похоже, не появляется. Спасибо за ссылку и за ваши усилия. :) – DeCaf

ответ

1

Просто запустите приложение в новом окне (ярлык, приложение), настроенное для передачи определенного параметра в командной строке исполняемому файлу, чтобы указать, что среда должна быть окрашена.

Например, myapp.exe -RunInNewConsole

Другой вариант заключается в определении, если вы уже работаете в консоли, используя AttachConsole метод:

[DllImport("kernel32.dll")] 
    static extern bool AttachConsole(int dwProcessId); 

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

это хороший хак, но он не отвечает на вопрос о том, как определить, было ли приложение запущено с консоли, или оно создало свою собственную консоль –

+0

@MikeDinescu: почему бы и нет? Если у меня открытое окно консоли и я набираю myapp.exe, параметр командной строки отсутствует. Если я выберу ярлык из меню «Пуск», ярлык будет настроен с параметром запуска и откроется новое окно. Если я запускаю приложение из другого приложения, команда запуска выполняется с параметром запуска и открывается новое окно. –

+1

Это будет работать, если я знаю, что он был запущен из ярлыка. Кого я не знаю. Например, пользователь может дважды щелкнуть файл .exe из Проводника Windows. Кроме того, это не похоже на то, что делает PowerShell.exe. Поэтому должен быть лучший способ. – DeCaf

Смежные вопросы