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

129
26 августа 2019, 03:10

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

Answer 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.

READ ALSO
Перехват bad request на клиенте

Перехват bad request на клиенте

У меня есть в приложении mvc фильтр для генерации ошибок на клиент

122
Передача файла на сервер

Передача файла на сервер

Нашёл на stackoverflow тему как передавать файл с клиента на серверhttps://stackoverflow

126
Конструктор возвращает null

Конструктор возвращает null

Имеется следующий код:

110
Потоки winforms

Потоки winforms

Как реализовать потоки? я ничего в них не понимаюТакое выводит:"Не возможно преобразовать из группы методов в ThreadStart"

105