Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.10.30;
Скачать: CL | DM;

Вниз

Консольное приложение. Иконка в области уведомлений.   Найти похожие ветки 

 
Deltas ©   (2009-08-28 17:24) [0]

Здравствуйте, мастера! Можно ли в приложении, в котором нет ни одного графического окна, создать иконку в области уведомлений панели задач? Вызываю Shell_NotifyIcon, иконка появляется, но при наведении мыши, исчезает.


 
Медвежонок Пятачок ©   (2009-08-28 17:33) [1]

графического? можно без графического.


 
clickmaker ©   (2009-08-28 18:05) [2]

> Вызываю Shell_NotifyIcon

а что передается в NOTIFYICONDATA::hWnd?


 
CrytoGen   (2009-08-28 18:06) [3]

Исчезает, по моему, когда не обрабатываются сообщения от трея.


 
Deltas ©   (2009-08-28 18:10) [4]


> а что передается в NOTIFYICONDATA::hWnd?

hWnd := 0;


 
Deltas ©   (2009-08-28 18:58) [5]

program Project1;

{$APPTYPE CONSOLE}

uses
 Windows, Messages, SysUtils, ShellAPI;

const
 wmNotifyIconEvent = WM_USER;

var
 NotifyIconData: TNotifyIconData;

begin
 SetConsoleTitle("unique name");

 Sleep(200);

 NotifyIconData.cbSize := SizeOf(NotifyIconData);
 NotifyIconData.Wnd := FindWindow(nil, PChar("unique name"));
 NotifyIconData.uID := 0;
 NotifyIconData.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
 NotifyIconData.uCallbackMessage := wmNotifyIconEvent;
 NotifyIconData.hIcon := LoadIcon(0, IDI_EXCLAMATION);
 NotifyIconData.szTip := "Warning";
 
 Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
 
 Sleep(INFINITE);
end.


Здесь NOTIFYICONDATA::hWnd получает значение дескриптора консольного окна. Иконка в области уведомлений не пропадает при наведении мыши. Но возникает вопрос в том, как обрабатывать сообщения от иконки? GetMessage, PeekMessage не отловят это сообщение, т.к. консольное окно живет в одном из потоков процесса csrss.exe.


 
Eraser ©   (2009-08-28 19:15) [6]

> [5] Deltas ©   (28.08.09 18:58)

можно создать доп. поток с доп. окном для обработки этих сообщений.


 
Юрий Зотов ©   (2009-08-31 10:16) [7]

Можно и не дополнительный, никто не мешает окну и консоли работать в одном потоке. То есть - делаем самое обычное tray-приложение, в OnCreate главной формы пишем AllocConsole, а в OnDestroy - FreeConsole. И все.



Страницы: 1 вся ветка

Текущий архив: 2011.10.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
3-1265198959
grammar-nazi
2010-02-03 15:09
2011.10.30
настройки bde для dbase level 7


15-1309765210
PiterK
2011-07-04 11:40
2011.10.30
Обводка изображения


4-1251465883
Deltas
2009-08-28 17:24
2011.10.30
Консольное приложение. Иконка в области уведомлений.


2-1310461223
Abibas
2011-07-12 13:00
2011.10.30
Вопрос по keybd_event


15-1309411014
Дмитрий С
2011-06-30 09:16
2011.10.30
Какой код ошибки http повесить, когда