Здравствуйте, 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?