![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Консольное приложение. Иконка в области уведомлений. [D5, WinXP]
Deltas © (2009-08-28 17:24:00)Здравствуйте, мастера! Можно ли в приложении, в котором нет ни одного графического окна, создать иконку в области уведомлений панели задач? Вызываю Shell_NotifyIcon, иконка появляется, но при наведении мыши, исчезает.
Юрий Зотов (2009-08-31 10:16:00) [1]Можно и не дополнительный, никто не мешает окну и консоли работать в одном потоке. То есть - делаем самое обычное tray-приложение, в OnCreate главной формы пишем AllocConsole, а в OnDestroy - FreeConsole. И все.
Eraser (2009-08-28 19:15:00) [2]> [5] Deltas © (28.08.09 18:58)
можно создать доп. поток с доп. окном для обработки этих сообщений.
Deltas (2009-08-28 18:58:00) [3]
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.
Deltas (2009-08-28 18:10:00) [4]
> а что передается в NOTIFYICONDATA::hWnd?
hWnd := 0;
CrytoGen (2009-08-28 18:06:00) [5]Исчезает, по моему, когда не обрабатываются сообщения от трея.
clickmaker (2009-08-28 18:05:00) [6]> Вызываю Shell_NotifyIcon
а что передается в NOTIFYICONDATA::hWnd?
Медвежонок Пятачок (2009-08-28 17:33:00) [7]графического? можно без графического.