Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
9-1117449211
Кефир87
2005-05-30 14:33
2005.10.02
Что у меня с текстурами опять.. ёлы палы?!


1-1126181305
JTAG
2005-09-08 16:08
2005.10.02
Как можно узнать открыт файл или нет?


1-1126636918
TStas
2005-09-13 22:41
2005.10.02
Перехват сообщения


14-1126351281
palva
2005-09-10 15:21
2005.10.02
Кто пойдет за гробом?


1-1126106582
KLAUS
2005-09-07 19:23
2005.10.02
WriteFloat