Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.024 c
6-1118236779
slaga
2005-06-08 17:19
2005.10.02
Как узнать подключен ли компьютер к локальной сети


1-1126273329
pupkin
2005-09-09 17:42
2005.10.02
как в объекте dhtmledit отформатировать кусок текста


14-1126194333
Ксардас
2005-09-08 19:45
2005.10.02
Каким образом у ПО версии определяются?


9-1117339594
Anonim
2005-05-29 08:06
2005.10.02
Как соединить две точки не линией?


1-1126002258
Николай1
2005-09-06 14:24
2005.10.02
Звязать TreeView и MainMenu




   Наверх