Нужно запустить приложение Win forms из командной строки cmd и передать параметры на выполнение функции, графический интерфейс при этом не должен запускаться.
Без некоторой переделки WinForms приложения не получится. Итак, идем в файл Program.cs
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
И делаем немного магии:
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
const int SW_HIDE = 0;
const int SW_SHOW = 5;
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//параметр может звучать произвольно по вашему желанию
if (args.Contains("-nowindow"))
{
// выполняем то что нужно
// хорошо если в приложении хорошая архитектура и логика от
// представления разделена - все будет проще
// Иначе переделывать придется многое.
// как-то так, удачи =)
Console.WriteLine("Привет");
Console.WriteLine("Введите дату начала:");
var t = Console.ReadLine();
var startDay = new DateTime();
DateTime.TryParse(t, out startDay);
Console.WriteLine(startDay);
//something else
Console.ReadKey();
}
else
{
//если параметра -nowindow нет то стартуем как обычно
var handle = GetConsoleWindow();
ShowWindow(handle, SW_HIDE);
Application.Run(new Form1());
}
}
Не забываем переключить тип выходных данных в свойствах проекта на Консольное приложение.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости