![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
системный трей
Anton S. © (2005-08-07 23:10:00)Как добиться того, чтобы приложение "жило" в системном трее, а не на панели задач?
И еще один вопрос - как заставить окно вообще не отображаться ни на панели задач, ни в системном трее?
DVM (2005-08-08 16:48:00) [1]
> То есть, часть панели задач (taskbar), но не сама панель
> задач.
Почему в классе окна панели задач фигурирует слово SysTray?
> SysTray - это область уведомлений (notification area).
Это TrayNotifyWnd, слова Sys там нет.
Юрий Зотов (2005-08-08 16:27:00) [2]DVM © (08.08.05 13:26) [7]
SysTray - это область уведомлений (notification area). То есть, частьпанели задач (taskbar), но не самапанель задач.
Alexander Panov (2005-08-08 15:32:00) [3]К сожалению, MS поменял термин. Раньше в MSDN прямо звучало название "System Tray". Теперь этот термин сменился на "StatusBar" и практически единственное упоминание "Tray" в MSDN ограничивается комментарием к Shell_NotifyIcon:
Remarks
The taskbar notification area is sometimes erroneously called the "tray."
DVM (2005-08-08 14:20:00) [4]
> n0name (08.08.05 14:07) [8]
Я думаю, что сейчас я уже не найду точной страницы, но там буквально говорилось так: "...Область уведомлений, также часто ошибочно называемая трей...". Где то в описании ShellNotifyIcon, по-моему было.
n0name (2005-08-08 14:10:00) [5]>>Systray = "панель задач", на том же MSDN есть прямое подтверждение.
Где именно?
n0name (2005-08-08 14:07:00) [6]>>Systray = "панель задач", на том же MSDN есть прямое подтверждение.
Где именно?
DVM (2005-08-08 13:26:00) [7]
> Как добиться того, чтобы приложение "жило" в системном трее,
> а не на панели задач?
Systray = "панель задач", на том же MSDN есть прямое подтверждение.
n0name (2005-08-08 06:29:00) [8]MSDN - лучший справочный ресурс по WinAPI.
Adder (2005-08-08 00:40:00) [9]http://www.firststeps.ru/mfc/winapi/
grouzd[E]v (2005-08-08 00:09:00) [10]SDK / FAQ - нужно искать по конкретному вопросу имхо
Anton S. (2005-08-08 00:04:00) [11]Еще не пробовал использовать, но спасибо за совет.
Кстати, не могли бы подсказать какой-нибудь хороший справочный материал (книги или online-ресурсы) по WIN-API, желательно на русском языке?
grouzd[E]v (2005-08-07 23:35:00) [12]PS это код из Project Source ессно (project > view source)
grouzd[E]v (2005-08-07 23:33:00) [13]> в трей - через WinAPI. лучше воспользоваться компонентом из библиотеки rxlib (rxlib.ru)
> убрать из таскбара (из faq здесь же, который, впрочем даавно не работает):
program Project1;
uses
Forms,
Windows,
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
var
ExtendedStyle : integer;
begin
Application.Initialize;
ExtendedStyle:=GetWindowLong(application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle, GWL_EXSTYLE,
ExtendedStyle or WS_EX_TOOLWINDOW {AND NOT WS_EX_APPWINDOW});
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Если включить коментарий {AND NOT WS_EX_APPWINDOW}, то получите очень интересное приложение. Оно не видно в TaskBar и на него нельзя переключиться по Alt-Tab, но когда приложение минимизируется оно остается на рабочем столе в виде свернутого заголовка (прямо как в старом добром Windows 3.11)
Только сpазу пpедупpеждаю пpо гpабли, на котоpые я наступал:
Будь готов к тому, что если пpи попытке закpытия пpиложения в OnCloseQuery или OnClose выводится вопpос о подтвеpждении, то могут быть пpоблемы с автоматическим завеpшением пpогpаммы пpи shutdown - под Win95 пpосто зависает, под WinNT не завеpшается.
Очевидно, что сообщение выводится, но его не видно (пpичем SW_RESTORE не сpабатывает).
Решение - ловить WM_QueryEndSession и после всяких завеpшающих действий и вызова CallTerminateProcs выдавать Halt.