ПредишенСледващото

Често програмист изправени пред задачата да пишете работещо приложение във фонов режим и не се нуждае от пространство на лентата на задачите. Ако се вгледате в долния десен ъгъл на десктопа на Windows, вие със сигурност ще намерите там приложения, за които се решават този проблем: денонощно, превключване на клавиатурната подредба, контрол на силата на звука и т.н. Ясно е, че, без значение как ще се увеличи или намали формата на собствената си .. заявление, да стигнат до там по обичайния начин ще се провали. Това осигурява начин за Shell API.

Тези снимки, които са на системната лента - това е наистина само една снимка, а не минимизираните прозорци. Те се управляват и да се изхвърлят System Tray панел. Тя поема още две функции: Съветите за всеки от прилагането на икони и уведомление, че е създадена иконата, всички движения на мишката върху него.

Всички API Система контейнера се състои от един (1) функция:

параметър DwMessage определя един от операции: NIM_ADD означава добавяне на икона в областта, NIM_DELETE - отстраняване, NIM_MODIFY - промяна.

Производството на работа зависи от това кои области ще бъдат запълнени TNotifyiconData структура. Задължително поле е поле cbsize - то съдържа резолюцията на структура. Вятърни поле трябва да съдържа дръжката на прозореца, за да получавате известия за събития, свързани с иконата. Съобщението за Windows, което искате да получите от системата за преместване на мишката върху иконата, пишете в полето uCallbackMessage. Ако искате да, когато тези движения над иконите показват върха, задаване на текст в полето szTip. В полето UID определя от броя значка - всяко приложение може да бъде поставен на системната лента, тъй като много икони. По-нататъшни операции ще произвеждат, създаване на този номер. Descriptor поставена иконата трябва да бъде посочен в полето HICON. Тук можете да изберете иконата, която е свързана с приложението ви, или да качите своя собствена - ресурс.

Забележка. Промяна на иконката на приложението може да бъде в диалоговия прозорец на проекта / Опции на страницата за кандидатстване. Той ще бъде достъпен чрез Application.Icon собственост. Тук можете също да редактирате и линия за съвети - Application.Title собственост.

И накрая, в полеви uFlags на което трябва да се каже на системата, което искате от него, или, с други думи, които на HICON полета, uCaiibackMessage и szTip всъщност пълни. В това поле се осигурява комбинация от три знамена: NIF_ICON, NIF_MESSAGE и NIF_TIP. Можете да попълните, да речем, област szTip, но ако не е установен икона NIF_TIP флаг сте създали няма да има редове с връх.

Две по-долу илюстрират метода. Първият от тях създава икона в системната лента, а втората - да го унищожи.

Забележка: Не забравяйте да унищожи създавате икони в системната лента. Това не става автоматично, дори когато приложението е затворен. Иконата ще бъде отстранен само след рестартиране. икона Външен вид ни поставя на системната лента, не се различава от други икони на приложения.

Съобщението дадено от uCallbackMessage в областта, в действителност е единствената връзка, която ви свързва с икона, след като тя е създадена. Той съчетава няколко съобщения. Когато влезеш в такова съобщение (в примера по-горе, тя има идентификатор WM_MYTRAYNOTIFY), в областта предава манипулатор TMessage тип структура, така разпределени. Параметърът wParam съдържа номера на иконата (този, който е създаден в UID кога е създаден) и LParam вариант - .. идентификатор на съобщение на мишката, като WM_MOUSEMOVE, WM_LBUTTONDOWN и т.н. За съжаление, останалата част от информацията от тези съобщения се губи. мишка координира по време на събитието ще трябва да разберете чрез извикване на функцията API GetCursorPos:

Моля, имайте предвид, че не е достатъчно да извикате метод Popup при показване на изскачащо меню. Така че е необходимо да се направи главния формуляр за кандидатстване на преден план, в противен случай няма да получавате съобщения от менюто.

Сега ние се реши още две задачи. На първо място, как да се направи заявление е сведена до минимум в лентата на задачите (лентата на задачите), както и на системната лента? И това, което е повече - как да го стартирате от време на кратък формуляр от и основна форма за да се покаже само определен събитие (пристигането на пощата, обидно определен период от време, и т.н. ...).

Отговорът на първия въпрос е очевиден. Ако се минимизира прозореца, не само главния формуляр за кандидатстване (Application.MainForm.Handle), но също така и прозореца на приложението (Application.Handle), след прилагането напълно ще изчезнат "от радарните екрани." В този момент, трябва да се създаде икона в панела System Tray. В своята изскачащо меню за елемента, избор, че и двете стъкла са възстановени, а иконата се отстранява.

За да стартирате приложението, след като в кратък формуляр от и без основната форма, трябва да добавите към горното, инсталирането на имотите в Application.showMainForm до False. Тук възниква един сложност - ако основната форма се създава в една невидима държава, нейните компоненти също ще бъдат направени невидими. Ето защо, в първото си шоу ги видим собственост на True. За да не се повтаря два пъти го, задаване на флаг - глобална променлива shownonce:

Подкрепете проекта - споделете линка, благодаря!