Главная страница
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.01 c
15-1309277924
tesseract
2011-06-28 20:18
2011.10.30
пивная тема.


2-1310428972
Gu
2011-07-12 04:02
2011.10.30
%windir% и другие переменные


15-1309527475
Chatnick
2011-07-01 17:37
2011.10.30
Ассоциация ICO-файла с программой.


2-1310328696
Gu
2011-07-11 00:11
2011.10.30
format строки числовых символов


6-1245013139
dmitryfrisky
2009-06-15 00:58
2011.10.30
Компонент TIdMappedPortTCP