Вы имеете в виду так же, как работает Visual Studio?
Если это так, то вы не можете сделать это в обычном приложении Windows - читы Visual Studio.
Проблема в том, что приложение Windows может быть либо приложением Windows Forms, либо консольным приложением, но не может быть и тем и другим - это решается во время компиляции (для приложений .Net это находится в окне свойств проекта). Ваши варианты:
Сделайте ваше приложение приложением Windows Forms
В этом случае # 1 и # 3 будут отлично работать, но для # 2 вы обнаружите, что вы не можете читать / записывать в консоль (потому что их нет!). Если ваша заявка не нуждается в обратной связи, тогда это может быть хорошо - делайте свою работу, как обычно, и просто не отображайте форму:
[STAThread]
static void Main(string[] args)
{
if (args.Length > 0)
{
// Handle #2 here
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new ConfigurationActionManagerForm());
}
}
Сделайте ваше приложение консольным
В этом случае # 2 будет работать отлично, однако, хотя # 1 и # 3 будут работать нормально, у вас всегда будет открыто окно консоли в фоновом режиме - если вы закроете окно консоли, ваше приложение завершится.
Опять же, это может быть хорошо, но лично я считаю, что это взломать.
Чит (делать то, что делает Visual Studio)
Visual Studio использует два отдельных приложения: одно - консольное, а другое - приложение Windows Forms. Простое решение - оставить все как есть и потребовать, чтобы пользователи запускали другой исполняемый файл при запуске версии командной строки (например, myprogram_g.exe
и myprogram_w.exe
).
Однако Visual Studio идет на шаг дальше и имеет единственную точку входа, devenv
. Это достигается за счет того факта, что по соображениям совместимости оболочка Windows всегда будет запускать файл .com
вместо .exe
, если есть какая-либо неопределенность. Если все ярлыки и т. Д. Указывают на исполняемый файл, если вы запустите devenv
в командной строке, вместо этого будет запущено приложение devenv.com
, которое использует магию, чтобы выяснить, работает ли оно как консольное приложение или приложение Windows.
Мой совет - создать два разных приложения и оставить все как есть.
См. Как написать программу, которая может быть запущена в виде консоли или приложения с графическим интерфейсом? для получения более подробной информации (обязательно прочитайте комментарии, в которых содержатся дополнительные полезные предложения).
Также см. Как сделать приложение как графическим, так и консольным приложением? о том, как ildasm
делает это.