Доброго времени суток! Такая проблемка возникла - моя прога далжна отображать в systray-е состояние своей работы. Под одним пользователем все работает нормально, но если зайти другим юзером (через Switch User) то начинаются проблемы! Иконка почему-то не перерисовывается и имеет серый цвет + вся покоцаная. Как решить эту проблемку?
ATX Скажем, может у другого юзера глубина цветов на десктопе меньше стоит? А вообще по-моему в 37 строчке кода ошибка у тебя.
KeSqueer, Yashin Вы прикалываетесь, а автор реального совета просит. Нет чтобы написать, дай код или хотя бы поподробнее...
Xerx А разве у всех юзеров может одно гуйное приложение так сразу работать? Я думал нужно у каждого свое запускать. Но тогда они на равных правах работают.
Естественно у каждого юзера запускается свой экземпляр приложения (иначе и небывает) и картинка тоже валидная Такая хрень происходит если переключаться между юзерами, хотя я как временное решение поставил перерисовку иконки по таймауту и она получается нормальная. Но это не решение траблы :-(
1. в начале я устанавливаю иконку в систрей: mov note.cbSize,sizeof NOTIFYICONDATA push hWnd pop note.hwnd mov note.uID,IDI_TRAY mov note.uFlags,NIF_ICON+NIF_MESSAGE+NIF_TIP mov note.uCallbackMessage,WM_SHELLNOTIFY mov eax,hSystrayON mov note.hIcon,eax invoke Shell_NotifyIcon,NIM_ADD,addr note 2. если в программе меняется событие, я перерисовываю иконку на другую mov eax,hSystrayOFF mov note.hIcon,eax invoke Shell_NotifyIcon,NIM_MODIFY,addr note Да, в w2k иконка всегда серая показывается :-( Что еще нужно сделать?
ATX поставил перерисовку иконки по таймауту ... Но это не решение траблы Taskbar Creation Notification?
ATX это я имел в виду. Ну, ХЗ. Проверь основное: 1) В этом случае note должна быть глобальной структурой. 2) Если note все же локальная структура, не следует ставить NIF_TIP, когда подсказка не заполняется. 3) WM_SHELLNOTIFY >= WM_USER При "перерисовке" иконки используется тот же хендл, или заново загружается иконка? 4) Попробуй вот это:
1. note - глобальная структура 2. пробовал к с NIF_TIP, так и без (результат отсталя неизменен) 3. При перерисовке использую тот же хендл. Короче "а во и ныне там", как я понимаю траблу, нужно после повторного входа в акаунт перерисовывать иконку. Только не понятно как отслеживать этот момент!?
q_q, спасибо! Это хорошее решение, но проблема в том что описываемая на MSDN технология срабатывает только при полном уничножении и перезапуске explorer.exe. В данном случае, к сожалению не подходит. Т.к. при session unlock - explorer.exe просто продолжает работу!
Сенькс q_q! WTSRegisterSessionNotification тоже не годится, т.к. оно только - Requires Windows Vista or Windows XP. А оно еще и на w2k должно работать :-(