Домой WINAPI Сворачиваем консольное приложение в область уведомлений(трей): Справочник по C#

Сворачиваем консольное приложение в область уведомлений(трей): Справочник по C#

1139
0


      Бывает, необходимость свернуть приложение в область уведомлений, особенно когда выполняется большой код. Рассмотрим пример реализации данной задачи. Создайте проект консольного приложения в Microsoft Visual Studio.

Для того чтобы свернуть консольное приложение воспользуемся WinAPI функциями «ShowWindow» и «GetConsoleWindow» из библиотеки «user32.dll». Добавим их подключение перед методом Main.

[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

[System.Runtime.InteropServices.DllImport("kernel32.dll", ExactSpelling = true)]
private static extern IntPtr GetConsoleWindow();
Метод Main является точкой входа консольного приложения C# или приложения Windows. (Для библиотек и служб не требуется метод Main в качестве точки входа). При запуске приложения метод Main является первым вызываемым методом.

Для сворачивания консольного приложения в область уведомлений, воспользуемся WinAPI функцией ShowWindow с параметром 1.

ShowWindow(GetConsoleWindow(), 1);

     Что бы отобразить консольное приложение в области уведомлений воспользуемся пространством имен System.Windows.Forms, которое содержит классы для создания приложений Windows, позволяющие наиболее эффективно использовать расширенные возможности пользовательского интерфейса, доступные в операционной системе Microsoft Windows.

Подробнее с данным пространством имен, вы можете ознакомиться на сайте разработчиков Microsoft MSDN по адресу http://msdn.microsoft.com/ru-ru/library/system.windows.forms(v=vs.110).aspx

Добавьте данное пространство имен в ваш проект.

using System.Windows.Forms;

И ссылку на его библиотеку.

      Данное пространство имен содержит класс NotifyIcon. Класс указывает на компонент, который создает значок в области уведомлений.

Подробнее с данным классом, вы можете ознакомиться на сайте разработчиков Microsoft MSDN по адресу http://msdn.microsoft.com/ru-ru/library/system.windows.forms.notifyicon(v=vs.110).aspx.

Указываем создание нового компонента NotifyIcon, который создаст значок в области уведомлений.

NotifyIcon icon = new NotifyIcon();

      Далее необходимо задать текущий значок, инициализируя новый экземпляр класса System.Drawing.Icon из указанного имени файла иконки формата *.ico. Данный значок будет отображаться в значок в области уведомлений. Файл значка необходимо положить в туже директорию, что и исполняемый файл.

icon.Icon = new System.Drawing.Icon("CSHarp.ico");

Так же необходимо добавить ссылку на библиотеку System.Drawing.

Укажем, что значок должен отображаться в области уведомлений.

icon.Visible = true;

Зададим текст подсказки, который будет отображаться при наведении указателя мыши на значок в области уведомлений.

icon.Text = "Свернутое консольное приложение";

      Отобразим всплывающую подсказку с указанным заголовком, текстом и значком в области уведомлений, в течении заданного периода времени. Укажем, например, две секунды.

icon.ShowBalloonTip(2000, "Скрытое консольное приложение", "Скрытие выполнено успешно!", ToolTipIcon.Info);

Так как никакого долго выполняющегося кода у нас нет, то сообщение вы не увидите, для этого добавим четырех секундную задержку.

System.Threading.Thread.Sleep(4000);

      Для того чтобы развернуть консольное приложение, воспользуемся WinAPI функцией, что и при сворачивании, только с параметром 1, а также добавим код для скрытия значка из области уведомлений.

ShowWindow(GetConsoleWindow(), 1);
icon.Visible = false;

Полный листинг приложения приведен ниже:

[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

[System.Runtime.InteropServices.DllImport("kernel32.dll", ExactSpelling = true)]
private static extern IntPtr GetConsoleWindow();

static void Main(string[] args)
{
//сворачиваем в область уведомлений
ShowWindow(GetConsoleWindow(), 0);

//Указываем компонент, который создает значок в области уведомлений.
//Этот класс не может наследоваться.
NotifyIcon icon = new NotifyIcon();

//Задаем текущий значок.
//Иконка расположена рядом с exe файлом
icon.Icon = new System.Drawing.Icon("CSHarp.ico");

//Задаем значение, указывающее, виден ли значок в области уведомлений
//в панели задач.
icon.Visible = true;

//Задаем текст подсказки, отображаемый при наведении указателя
//мыши на значок в области уведомлений.
icon.Text = "Свернутое консольное приложение";

//Отображаем всплывающую подсказку с указанным заголовком, текстом
//и значком в панели задач в течении заданного периода времени.
icon.ShowBalloonTip(2000, "Скрытое консольное приложение", "Скрытие выполнено успешно!", ToolTipIcon.Info);

System.Threading.Thread.Sleep(4000);

ShowWindow(GetConsoleWindow(), 1);//показываем
icon.Visible = false;  //убираем иконку из области уведомлений
Console.ReadKey();
}

      Запустите ваш проект, нажав на клавишу «F5». Если вы все сделали правильно, то в области уведомлений вы увидите сообщение.

Ссылка на исходник: Rusfolder.net

ЧИТАТЬ ТАКЖЕ:  Добавляем свои кнопки в заголовок окна Windows Form(WinAPI): Справочник по C#

Сворачиваем консольное приложение в область уведомлений(трей): Справочник по C#

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь