Бывает, необходимость свернуть приложение в область уведомлений, особенно когда выполняется большой код. Рассмотрим пример реализации данной задачи. Создайте проект консольного приложения в 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();
Для сворачивания консольного приложения в область уведомлений, воспользуемся WinAPI функцией ShowWindow с параметром 1.
ShowWindow(GetConsoleWindow(), 1);
Что бы отобразить консольное приложение в области уведомлений воспользуемся пространством имен System.Windows.Forms, которое содержит классы для создания приложений Windows, позволяющие наиболее эффективно использовать расширенные возможности пользовательского интерфейса, доступные в операционной системе Microsoft Windows.
Добавьте данное пространство имен в ваш проект.
using System.Windows.Forms;
И ссылку на его библиотеку.
Данное пространство имен содержит класс NotifyIcon. Класс указывает на компонент, который создает значок в области уведомлений.
Указываем создание нового компонента 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
0.00 (0%) 0 votes










