Как вызвать функцию Win Forms приложения из console?

369
02 июня 2017, 09:52

Нужно запустить приложение Win forms из командной строки cmd и передать параметры на выполнение функции, графический интерфейс при этом не должен запускаться.

Answer 1

Без некоторой переделки 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());
        }
    }

Не забываем переключить тип выходных данных в свойствах проекта на Консольное приложение.

READ ALSO
Можно ли узнать кто прячется за ServiceHost?

Можно ли узнать кто прячется за ServiceHost?

При работе с пакетом офиса через MicrosoftOffice

193
Замена контента формы c#

Замена контента формы c#

Всем привет!

225
Конвертировать картинку в цифри на PHP

Конвертировать картинку в цифри на PHP

Здравствуйте! Как можно конвертировать картинку в набор цифр, с помощью которых можно будет нарисовать ту же картинку заново на PHP?

238
Unknown: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in/vqmod/vqmod.php on line 329 openCart

Unknown: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in/vqmod/vqmod.php on line 329 openCart

opencart выходит такая ошибка вверху страницыВот строка

226