Форум: "WinAPI";
Текущий архив: 2011.10.30;
Скачать: [xml.tar.bz2];
ВнизКонсольное приложение. Иконка в области уведомлений. Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2011.10.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c