Здравствуйте. Есть консольное приложение которое работает, как сервис. Возможно ли, чтобы при его запуске оно сворачивалось в трей? Я попробовал использовать ф-ю Shell_NotifyIcon, и в поле tnd.hIcon для структуры tnd указываю стандартную иконку(IDI_SHIELD). Проект компилируется, однако в трее пусто. Вообще возможно ли сделать такое для консольного приложения? Если да, то буду рад, если подскажете куда смотреть.
Здравствуйте, qdrj, Вы писали:
Q>Здравствуйте. Есть консольное приложение которое работает, как сервис. Возможно ли, чтобы при его запуске оно сворачивалось в трей? Я попробовал использовать ф-ю Shell_NotifyIcon, и в поле tnd.hIcon для структуры tnd указываю стандартную иконку(IDI_SHIELD). Проект компилируется, однако в трее пусто. Вообще возможно ли сделать такое для консольного приложения? Если да, то буду рад, если подскажете куда смотреть.
В простейшем случае тебе надо поступить так:
1) Если у тебя Express версия, то тебе надо создать иконку и файл ресурсов вручную (Express студия официально не поддерживает ресурсы, но на самом деле она их компилирует и добавляет).
a) icon.rc
1 ICON "icon.ico"
б) icon.ico -- создаешь где хочешь, например, в бесплатном IcoFX.
в) добавляешь оба файла в папку с исходным текстом и в ветку Resource Files проекта.
2) Показываем иконку:
nid.uCallBackMessage = WM_USER + 50 /*например; и в этой функции вывести менюшку.*/
//И уточнение: для удаления NIM_DELETE добавляется к флагу uFlags
Однако, у Вас неверно построено приложение, судя по Вашему описанию.
Ведь сервис не создает окно по определению. Может стоит посмотреть шаблон сервиса в VS 6.0?
Там все ясно описано.
Здравствуйте, RealBobEx, Вы писали:
RBE>Однако, у Вас неверно построено приложение, судя по Вашему описанию. RBE>Ведь сервис не создает окно по определению. Может стоит посмотреть шаблон сервиса в VS 6.0? RBE>Там все ясно описано.
Спасибо, за ответ. Я неправильно написал — нет консольного приложения, просто сервис.
Здравствуйте, 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>3) Убираем, если надо: то же самое, только NIM_DELETE в конце.
V>Вот вроде и все.
Спасибо за развернутый ответ.
nid.hWnd = GetConsoleWindow()
— наверно не подойдет, я ошибся в описании. Нет консольного окна.
Иконка вообще не отображается, как ее можно свзяать с процессом сервиса? Что указать в поле nid.hWnd?
эээ. А его (сервиса) окно вообще видимо на рабочем столе? Ибо интерактивность сервиса — еще включить надо, да и под вистой+ интерактивных сервисов не бывает.
Если сервис не интерактивный (или есть ось Виста/вин7) — никаких иконок в трее без процесса в юзерской сессии (любители переключать оконную станцию процесса сервиса идут нервно курить в связи с появлением висты).
Как много веселых ребят, и все делают велосипед...