Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как убрать лишние значки после перезапуска приложения?
|
|||
|---|---|---|---|
|
#18+
Перезапускать приложение я научился, но теперь возникла другая проблема: после каждого перезапуска в трее остаётся иконка, и в итоге их накапливается очень много. При наведении курсора на иконку она исчезает, если не связана с активным приложением, а как убрать программно такую иконку, чтобы не пугать пользователя их обилием? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 06:27 |
|
||
|
Как убрать лишние значки после перезапуска приложения?
|
|||
|---|---|---|---|
|
#18+
Перезапускать надо по-человечески, т.е. посылать приложению WM_QUIT, а не убивать процесс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 07:16 |
|
||
|
Как убрать лишние значки после перезапуска приложения?
|
|||
|---|---|---|---|
|
#18+
Abejonа как убрать программно такую иконку, чтобы не пугать пользователя их обилием?А как ты её туда добавил? Той же функцией она и убирается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 08:12 |
|
||
|
Как убрать лишние значки после перезапуска приложения?
|
|||
|---|---|---|---|
|
#18+
AbejonПерезапускать приложение я научился, но теперь возникла другая проблема: после каждого перезапуска в трее остаётся иконка, и в итоге их накапливается очень много. При наведении курсора на иконку она исчезает, если не связана с активным приложением, а как убрать программно такую иконку, чтобы не пугать пользователя их обилием? Перед тем как завершишь работу приложения: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 08:54 |
|
||
|
Как убрать лишние значки после перезапуска приложения?
|
|||
|---|---|---|---|
|
#18+
Dima TПерезапускать надо по-человечески, т.е. посылать приложению WM_QUIT, а не убивать процесс. Не помогает WM_QUIT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 11:40 |
|
||
|
Как убрать лишние значки после перезапуска приложения?
|
|||
|---|---|---|---|
|
#18+
AbejonDima TПерезапускать надо по-человечески, т.е. посылать приложению WM_QUIT, а не убивать процесс. Не помогает WM_QUIT. Иконка в трее остается при убивании процесса, т.е. при некорректном завершении процесса. Разбирайся с ним, как его корректно остановить, чтобы он нормально завершился, а не был убит извне. Если ты постоянно его так убиваешь, то обязательно вылезут проблемы из-за такого "перезапуска". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 11:46 |
|
||
|
Как убрать лишние значки после перезапуска приложения?
|
|||
|---|---|---|---|
|
#18+
Dima TИконка в трее остается при убивании процесса, т.е. при некорректном завершении процесса.Не, трей - это отдельная шеловская фигня со своим API, она за процессами сама не следит. Поэтому кто иконку в трей положил, тот её оттуда должен и убрать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 13:00 |
|
||
|
Как убрать лишние значки после перезапуска приложения?
|
|||
|---|---|---|---|
|
#18+
Да, согласен с тем, что обязательно надо делать Код: vbnet 1. чтобы убрать иконку из трея (и не важно, "убиваете" ли вы процесс или корректно выгружаете). Там еще есть ньюанс. Процесс Explorer может внезапно себя перегрузить, в этом случае иконка в трее не самовосстанавливается. У меня этот вопрос решен таймером (1 с), который "обновляет" иконку (т.е. в указанном случае она восстановится). Не самое красивое возможно, но вполне рабочее решение (заодно этот код может менять иконку на другую). Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Sorry за VB.Net (пишу в основном на нем), но смысл понятен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 19:47 |
|
||
|
Как убрать лишние значки после перезапуска приложения?
|
|||
|---|---|---|---|
|
#18+
Дмитрий77меня этот вопрос решен таймером (1 с) Можно подписаться на специальное событие: Код: plaintext 1. И ловить его у себя в WndProc основного окна: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 05:10 |
|
||
|
Как убрать лишние значки после перезапуска приложения?
|
|||
|---|---|---|---|
|
#18+
CEMb, >uTaskbarRestartMsg = RegisterWindowMessage(TEXT("TaskbarCreated")); Давно это все писалось, в основном еще на VB6, в таких вещах тогда еще мог плавать. Хотя продвинулся неплохо. Это все и на Win10 по сей день прекрасно работает. (иконки только в новых Tray Notifications на Win10 чуть больше чем 32, поэтому чуть мажутся при растягивании, но не критично, но я не нашел в MSDN новой документации по этому вопросу ) http://www.sql.ru/forum/actualsearch.aspx?search=Shell_NotifyIcon&sin=0&bid=34&bid=22&a=&ma=0&dt=-1&s=1&so=1 Здесь например возился с Custom-тултипами при наведении на иконку (картинка+ текст, типа тех что были модны на Висте) Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon) Там еще важна версия структуры, чтоб все фишки работали. На >=Vista это Version 4, на XP - Version 3. Но при случае совет учту. Хотя и "таймер" мой без нареканий работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 09:21 |
|
||
|
Как убрать лишние значки после перезапуска приложения?
|
|||
|---|---|---|---|
|
#18+
Дмитрий77иконки только в новых Tray Notifications на Win10 чуть больше чем 32, поэтому чуть мажутся при растягивании, но не критично, но я не нашел в MSDN новой документации по этому вопросу )Надо смотреть доку по типу окна, который используется в трее, я сейчас у себя в 7-ке спаем посмотрел - там ToolbarWindow32 (в 10-ке скорее всего тоже самое), соответственно, shell-овские функции скорее всего просто передают ресурсы в функции работы с тулбаром, и там работают те же правила, что в тулбаре. Насколько помню, достаточно в иконке иметь инстранс больше, чем требуемый размер, тогда оно пожмёт иконку до требуемого размера (возможно, важен порядок инстансов), и всё будет нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 10:21 |
|
||
|
Как убрать лишние значки после перезапуска приложения?
|
|||
|---|---|---|---|
|
#18+
CEMb, Там вот так примерно это делается Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. sys_WinVista - все что больше Виста включая Win10 NIIF_LARGE_ICON - согласно докам .hBalloonIcon берется из GetSystemMetrics если быть точным, хотя я пихаю в лоб 32х32. Но GetSystemMetrics (<Large>) и на 10-ке дает 32, один раз игрался, вроде не получается там что-то иное впихнуть (в смысле иконку другого размера). В 10-ке имеем гибрид между "Desktop" и "Модерн", и скорее всего там какая-то муть за пределами классических API. (сюда же меню кнопки старт правой кнопкой мыши - оно вроде по поведению Classic (в 8.1 там такое же, но еще чистый Classic), а стиль у него "Модерн"). Я только обратил внимание когда игрался, что когда этот Ballon на Win10 выводится, в %temp% образуется некий png кажется, сделанный из иконки, но даже не 48x48, а совершенно кривых размеров, что-то типа 43х43 или 51х51, не помню. Если видел Win10 Preview, то там эти Tray Notifications были с иконками гигантских вообще размеров, в первом Release это вообще убрали, а потом с обновлениями тихонько "немного увеличили". Вообще неохота счас этим заниматься, хотя и люблю копаться в этих мутях. Не одно мое приложение страдает этим "чуть размытием", а гораздо более известные, считай все кроме м.б. встроенных новых от MS типа защитника или One Drive. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 11:07 |
|
||
|
Как убрать лишние значки после перезапуска приложения?
|
|||
|---|---|---|---|
|
#18+
CEMb, спасибо, самый банальный и очевидный ответ оказался самым верным. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 08:39 |
|
||
|
Как убрать лишние значки после перезапуска приложения?
|
|||
|---|---|---|---|
|
#18+
CEMbДмитрий77Процесс Explorer может внезапно себя перегрузить, в этом случае иконка в трее не самовосстанавливается. У меня этот вопрос решен таймером (1 с), который "обновляет" иконку (т.е. в указанном случае она восстановится). Не самое красивое возможно, но вполне рабочее решение (заодно этот код может менять иконку на другую). Можно подписаться на специальное событие: Код: plaintext 1. И ловить его у себя в WndProc основного окна: Код: plaintext 1. 2. 3. 4. Счас внезапно обнаружил (через 3 года как это было написано), что у меня в .Net добавленный формально таймер кот. делает NIF_ICON+NIM_MODIFY ни фига не восстанавливает иконку после краша explorer. Странно, а в VB6 работало, вроде. Вспомнил про этот пост. Совет с uTaskbarRestartMsg + Shell_NotifyIcon(заново NIM_ADD) как раз помог, ну да это и грамотней, чем "долбежный таймер", коими злоупотреблял когда-то. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2018, 02:30 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39497516&tid=2017841]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 156ms |

| 0 / 0 |
