Текущий архив: 2005.10.02;
Скачать: CL | DM;
Вниз
системный трей Найти похожие ветки
← →
Anton S. (2005-08-07 23:10) [0]Как добиться того, чтобы приложение "жило" в системном трее, а не на панели задач?
И еще один вопрос - как заставить окно вообще не отображаться ни на панели задач, ни в системном трее?
← →
grouzd[E]v © (2005-08-07 23:33) [1]> в трей - через 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.
← →
grouzd[E]v © (2005-08-07 23:35) [2]PS это код из Project Source ессно (project > view source)
← →
Anton S. (2005-08-08 00:04) [3]Еще не пробовал использовать, но спасибо за совет.
Кстати, не могли бы подсказать какой-нибудь хороший справочный материал (книги или online-ресурсы) по WIN-API, желательно на русском языке?
← →
grouzd[E]v © (2005-08-08 00:09) [4]SDK / FAQ - нужно искать по конкретному вопросу имхо
← →
Adder © (2005-08-08 00:40) [5]http://www.firststeps.ru/mfc/winapi/
← →
n0name (2005-08-08 06:29) [6]MSDN - лучший справочный ресурс по WinAPI.
← →
DVM © (2005-08-08 13:26) [7]
> Как добиться того, чтобы приложение "жило" в системном трее,
> а не на панели задач?
Systray = "панель задач", на том же MSDN есть прямое подтверждение.
← →
n0name (2005-08-08 14:07) [8]>>Systray = "панель задач", на том же MSDN есть прямое подтверждение.
Где именно?
← →
n0name (2005-08-08 14:10) [9]>>Systray = "панель задач", на том же MSDN есть прямое подтверждение.
Где именно?
← →
DVM © (2005-08-08 14:20) [10]
> n0name (08.08.05 14:07) [8]
Я думаю, что сейчас я уже не найду точной страницы, но там буквально говорилось так: "...Область уведомлений, также часто ошибочно называемая трей...". Где то в описании ShellNotifyIcon, по-моему было.
← →
Alexander Panov © (2005-08-08 15:32) [11]К сожалению, MS поменял термин. Раньше в MSDN прямо звучало название "System Tray". Теперь этот термин сменился на "StatusBar" и практически единственное упоминание "Tray" в MSDN ограничивается комментарием к Shell_NotifyIcon:
Remarks
The taskbar notification area is sometimes erroneously called the "tray."
← →
Юрий Зотов © (2005-08-08 16:27) [12]DVM © (08.08.05 13:26) [7]
SysTray - это область уведомлений (notification area). То есть, часть панели задач (taskbar), но не сама панель задач.
← →
DVM © (2005-08-08 16:48) [13]
> То есть, часть панели задач (taskbar), но не сама панель
> задач.
Почему в классе окна панели задач фигурирует слово SysTray?
> SysTray - это область уведомлений (notification area).
Это TrayNotifyWnd, слова Sys там нет.
Страницы: 1 вся ветка
Текущий архив: 2005.10.02;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.051 c