Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
3-1265163528
Дмитрий С
2010-02-03 05:18
2011.10.30
Несколько строк в одну (*.mdb)


2-1310347116
R_R
2011-07-11 05:18
2011.10.30
Компонент TUdp; событие OnDataReceived


15-1309465804
Юрий
2011-07-01 00:30
2011.10.30
С днем рождения ! 1 июля 2011 пятница


11-1238076620
SPeller
2009-03-26 17:10
2011.10.30
KOL и D2009


15-1309364654
Baks
2011-06-29 20:24
2011.10.30
CR2 Converter





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский