Вставьте это статическое поле в свой класс "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-версии этого вопроса .