Re[2]: Как свернуть приложение в tray?
От: qdrj  
Дата: 06.12.09 09:21
Оценка:
Здравствуйте, vadimcher, Вы писали:

V>Здравствуйте, qdrj, Вы писали:


Q>>Здравствуйте. Есть консольное приложение которое работает, как сервис. Возможно ли, чтобы при его запуске оно сворачивалось в трей? Я попробовал использовать ф-ю Shell_NotifyIcon, и в поле tnd.hIcon для структуры tnd указываю стандартную иконку(IDI_SHIELD). Проект компилируется, однако в трее пусто. Вообще возможно ли сделать такое для консольного приложения? Если да, то буду рад, если подскажете куда смотреть.


V>В простейшем случае тебе надо поступить так:

V>1) Если у тебя Express версия, то тебе надо создать иконку и файл ресурсов вручную (Express студия официально не поддерживает ресурсы, но на самом деле она их компилирует и добавляет).
V>a) icon.rc
V>
V>1    ICON    "icon.ico"
V>

V>б) icon.ico -- создаешь где хочешь, например, в бесплатном IcoFX.
V>в) добавляешь оба файла в папку с исходным текстом и в ветку Resource Files проекта.
V>2) Показываем иконку:
V>
V>{ // add tray icon
V>    NOTIFYICONDATA nid = {};
V>    nid.cbSize = sizeof nid;
V>    nid.hWnd = GetConsoleWindow();
V>    nid.uFlags = NIF_ICON;
V>    nid.uID = 3;
V>    nid.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(1));
V>    Shell_NotifyIcon(NIM_ADD, &nid);
V>}
V>

V>3) Убираем, если надо: то же самое, только NIM_DELETE в конце.

V>Вот вроде и все.


Спасибо за развернутый ответ.

nid.hWnd = GetConsoleWindow()

— наверно не подойдет, я ошибся в описании. Нет консольного окна.
Иконка вообще не отображается, как ее можно свзяать с процессом сервиса? Что указать в поле nid.hWnd?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.