Страницы

Поиск по вопросам

четверг, 2 января 2020 г.

Как сделать окно приложения C# невидимым и не показывать в трее?

#c_sharp


Как сделать окно приложения C# невидимым и не показывать в трее?
    


Ответы

Ответ 1



Например в WPF, вы можете использовать Window.Hide() (Show() для отмены). Или Window.Visibility = Visibility.Collapsed (Visibility.Visible для отмены). Или если вы вовсе не хотите показывать окно, уберите StartupUri в App.xaml (и поменяйте ShutdownMode, разумеется). В WinForms аналогично помогает Form.Visible = false; Form.ShowInTaskbar = false;. Чтобы не показывать окно с самого начала, используйте Application.Run() без формы. Или вообще не запускайте Application, если вам не нужно будет показывать окно позже. Консольные приложения бегут в консоли, так что если вам нужен такой эффект, лучше писать неконсольное приложение. Если очень надо, можно воспользоваться P/Invoke (одолжено отсюда): using System.Runtime.InteropServices; static class NativeMethods { [DllImport("kernel32.dll")] static public extern IntPtr GetConsoleWindow(); [DllImport("user32.dll")] static public extern bool ShowWindow(IntPtr hWnd, int nCmdShow); public const int SW_HIDE = 0; public const int SW_SHOW = 5; } var handle = NativeMethods.GetConsoleWindow(); NativeMethods.ShowWindow(handle, NativeMethods.SW_HIDE); // убрать NativeMethods.ShowWindow(handle, NativeMethods.SW_SHOW); // вернуть назад Но при этом всё равно окно появится сначала, а лишь потом скроется. (А если вас запустит в своей консоли другое консольное приложение, то вы спрячете его консоль, что ещё хуже, честно говоря.) Поэтому я бы не рекомендовал идти этим путём. Если вы уже создали консольный проект, его можно легко превратить в windows-приложение, поменяв в свойствах проекта (вкладка Application) Output type с Console Application на Windows Application.

Комментариев нет:

Отправить комментарий