powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / и снова трей
25 сообщений из 120, страница 1 из 5
и снова трей
    #37355852
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забросил старую перспективную прогу из-за того, что до сих пор никто не знает, как удалить значок чужого приложения из трея(иконки справа в области уведомлений). долго думал, вот несколько идеек. какие из них выполнимы?.. 1)копировать из трея все иконки, запустить постороннюю прогу, которая добавить иконку в трей, удалить все иконки и обратно вставить копированные в самом начале иконки. 2)как-то блокировать трей на пару секунд в то время, когда посторонняя прога будет добавлять иконку 3) пометить уже находящиеся иконки в трее, добавить иконку посторонней проги, пройтись по всем иконкам и удалить непомеченную 4) пометить иконку посторонней проги при добавлении в трей и удалить помеченную 5) блокировать все команды, влияющие на трей на пару секунд во время добавления значка посторонней прогой

старые идеи, в правильности которых люди на форумах до сих пор не пришли к единому мнению:
1) узнать хендл посторонней проги во время её открытия, послать в трей команду с использованием этого хендла
2) узнать хендл посторонней проги во время её открытия, узнать хендлы всех дочерних окон, послать в трей команду на закрытие с использованием хендлов дочерних окон последовательно(на авось, может хендл одного из дочерних окон посторонней проги совпадает с хендлом значка этой проги в трее)
3) заранее узнать ID значка этой проги на одном компьютере, а затем послать команду в трей на закрытие, используя лишь ID значка; ID значка всегда одинаковый, независимо от внешник условий
4) хендл значка в трее никак не связах с хендлами проги
5) у значка вообще нет хендла
6) никак нельзя кикнуть значок чужой проги из трея

воть почти всё, что известно насчёт удаления чужого значка из трея... но результат не достигнут. буду рад услышать ваше мнение что и как
...
Рейтинг: 0 / 0
и снова трей
    #37355895
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
несанкционированное управление сторонней программой противозаконно
...
Рейтинг: 0 / 0
и снова трей
    #37356080
majestic-mike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_Oneнесанкционированное управление сторонней программой противозаконно

Гы :) такой статьи в УК пока нету :)

А что касается удаления трей-иконки - все предложенные способы - глупости, а те кто говорит что нельзя - они правы... ну вообще то можно - но универсального способа тут нет... трей - это не какое то окно принадлежащее исполняющейся программе... и это не иконка которая имеет свой ID или хэндл... трей это системное окно - с которым можно взаимодействовать, изменяя его сотояние (как визуальное - например иконки, так и не визуальное - например определять способы реакции на действия) посредством некоторого набора функций... и ещё раз повторюсь - трей никак не связан с выполняемым приложением... это когда взаимодействуешь с треем - система отправляет приложению сообщение о каком либо событии (клик правой кнопкой мыши в трее, двойной клик левой и т.п.)

Всё взаимодействие на уровне API - осуществляется через функцию

BOOL Shell_NotifyIcon(
DWORD dwMessage,
PNOTIFYICONDATA lpdata
);

где dwMessage - может быть:

NIM_ADD
NIM_DELETE
NIM_MODIFY
NIM_SETFOCUS

В данной ситуации нужно воспользоваться сообщением NIM_DELETE, которое необходимо послать от лица программы, значок которой нужно убрать из трея. Но тут - болт, который сидит во втором параметре функции - Shell_NotifyIcon.

Второй параметр - указатель на структуру NOTIFYICONDATA в поле uID которой содержится идентификатор "сеанса", открытого к трею - некий числовой идентификатор, который нужно знать, для того чтобы обращаться к добавленной иконке. Если хэндл окна любого запущенного приложения можно узнать и продублировать его для использования в своём процессе - пусть и с ограничениями и даже вообще без предположения о том связан сеанс трея именно с этим окном, или с другим (ничего плохого не случится если окно не инициирует работу с треем)... то вот этот самый идентификатор сеанса откуда ты узнаешь? будешь перебирать все окна процесса и для каждого хэндла окна перебирать все возможные идентификаторы? а их в DWORD - влезит 4 миллиарда с копейками... так что вся эта идея - ерунда. И - интересно, что за такая перспективная программка?
...
Рейтинг: 0 / 0
и снова трей
    #37356789
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
majestic-mike,

и всё же... на других форумах люди тоже не могут сойтись в мнении. как-то полюбэ можно. к примеру на ХР проблема решена удалением последней добавленной иконки. на семёрке это пока не работает. лан, у кого будет идеи - пишите, буду рад
...
Рейтинг: 0 / 0
и снова трей
    #37357229
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
majestic-mikeто вот этот самый идентификатор сеанса откуда ты узнаешь? будешь перебирать все окна процесса и для каждого хэндла окна перебирать все возможные идентификаторы? на одном из форумов люди сошлись во мнении, что BelowZero ID значка всегда одинаковый, независимо от внешник условий т.е. мона узнать ID на своём компе, такой же он будет на других и при других условиях. правда или нет я хз, для полноты картины нужно много мнений...
...
Рейтинг: 0 / 0
и снова трей
    #37357727
majestic-mike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelowZero,

Да ну нет же шь :)

Когда я отправляю NIM_ADD = я указываю этот код... системе, трею и прочим - абсолютно пофигу, что я туда передам... просто если приложение создаёт несколько иконок - оно как то должно различать их для того, чтобы допустим поменять состояние именно той иконки, которая нужна, а не другой...

Посмотри во вложении - небольшой пример...

Там я определяю две константы

Const TrayCellId_1 As Long = 1000
Const TrayCellId_2 As Long = 2000

для первой иконки в трее, и для второй...

То что сделали для XP - это вероятнее всего частный случай и не универсальный, т.к. думаю что приложения которые добавляют в трей только одну иконку - передают в качестве ID какое то значение 0 или 1 - которое возможно и повторяется (с некоторой долей вероятности)... я вот например передаю туда 1000 и 2000... кто нибудь другой передаст 3000 и 4000... и т.д. Я вот об этом пытаюсь сказать... единственный способ - это наверное сабклассинг самого трей окна... но для этого нужно в деталях знать что и где там происходит...
...
Рейтинг: 0 / 0
и снова трей
    #37357962
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
majestic-mike,

На ХР рабортает идеально, удалёяет "нулевую" иконку, ею как раз является последняя добавленная в трей иконка. не нужно знать ни хендл ни ID иконки. в семёрке нулевая иконка - самая левая иконка в трее, для дела это никак не поможет... насчёт ручной прописи ID... так ведь и у вас и у меня на компе иконка будет иметь ID 1000 и 2000? значит, можно узнать ID иконки посторонней проги, а затем послать трею сообщение, используя ID иконки?
...
Рейтинг: 0 / 0
и снова трей
    #37358110
majestic-mike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelowZero,

Ну я не знаю что там и как удаляется с нулевой иконкой :) может вы раскажите хитрый, шаманский способ - но я думаю, что если это происходит без отправки соответствующего сообщения - происходит утечка ресурсов...

А на счёт этого я и пытаюсь вам рассказать - что нужно знать ID иконки и действовать от имени окна, которое её создало... но ID - я вам сказал, и они указаны в исходнике... а в боевых условиях вы как их выяснять будете? запускать каждую прогу из отладчика и смотреть - а какой ей идентификатор решил присвоить разработчик? :)
...
Рейтинг: 0 / 0
и снова трей
    #37358139
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
majestic-mike,

итак, мы были на ступени BelowZero6) никак нельзя кикнуть значок чужой проги из трея а теперь уже BelowZeroзаранее узнать ID значка этой проги на одном компьютере, а затем послать команду в трей на закрытие, используя лишь ID значка; ID значка всегда одинаковый, независимо от внешник условий видимый прогресс) значит осталось узнать ID иконки этой посторонней проги(скайпа, если кто знает, напишите плз) и как-то узнать хендл... а если хендл никак не связан с самой прогой, то как его узнать? или всё-таки связан? сейчас мы остановились на теории BelowZero4) хендл значка в трее никак не связах с хендлами проги
...
Рейтинг: 0 / 0
и снова трей
    #37358150
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: majestic-mike


месье НижеНуля страдает фигнёй, потому что я когда пишу программы работающие с треем, всегда по таймеру удаляю\добавляю
иконку в трей. По опыту, если срубить и потом снова запустить процес explorer.exe то иконки некоторых приложений
теряются из трея и работающая программа становится неуправляема. Приходится убивать процес и запускать снова. Поэтому у
меня всегда есть код, который восстанавливает иконку в трее. И не только у меня.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
и снова трей
    #37358173
majestic-mike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelowZero,

Мы на этой ступени и находились... если бы вы внимательно читали мой пост (3-й сверху), а не гнались за "неведомым счастьем" - вы бы на это обратили внимание :)

Так же действительно рекомендую прислушаться к словам "Игорь Горбонос"

Хотя пока мы тут спорим - в моём больном мозгу проскочила одна идея... попробую её на практике и сообщу о результатах позднее...
...
Рейтинг: 0 / 0
и снова трей
    #37358381
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ммм не сомневаюсь в ваших знаниях, но мне тяжело смотреть на комменты "это не возможно". в программировании возможно всё, могут быть лишь проблемы в идее, знаниях и в воплощении задуманного. в данном случае проблемы с знаниями воздействия на трей. код, удаляющий иконку по порядковому номеру существует, его мне помог надыбать тим-тим в одном из прошлых многочисленных топиков.
Игорь Горбоноспотому что я когда пишу программы работающие с треем, всегда по таймеру удаляю\добавляю
иконку в трей. По опыту, если срубить и потом снова запустить процес explorer.exe то иконки некоторых приложений
теряются из трея и работающая программа становится неуправляема. Приходится убивать процес и запускать снова. Поэтому у
меня всегда есть код, который восстанавливает иконку в трее. И не только у меня. - это никак не мешает поставленной цели, всего лишь формальности. *и свой код я, а уж тем более те, кому будет удосужено запустить программу, не посчитают фигнёй
...
Рейтинг: 0 / 0
и снова трей
    #37361782
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero, как у Вас дела с треем, там http://www.cyberforum.ru/visual-basic/thread334883.html
энтузиаст, что-то наваял
...
Рейтинг: 0 / 0
и снова трей
    #37361803
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

не то
...
Рейтинг: 0 / 0
и снова трей
    #37361886
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroв программировании возможно всё, могут быть лишь проблемы в идее, знаниях и в воплощении задуманного+1, у тебя куча проблем, ты перечислил лишь малую часть.

Когда бредовые идеи отпадают, оказывается, что в оставшихся действительно возможно все. Только нахрен не нужно.

BelowZeroэто никак не мешает поставленной целиТоже нельзя не согласиться. И тоже можно дополнить: зато это эффективно мешает ее достижению.
...
Рейтинг: 0 / 0
и снова трей
    #37362055
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

если ваше сообщение не продвигало тему вверх по топику то это был бы 100% флуд)
...
Рейтинг: 0 / 0
и снова трей
    #37362090
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

Покажи то, что ты сам реально сделал для достижения своей цели по данной тематике(в коде, а не на быдлофлудском языке)
...
Рейтинг: 0 / 0
и снова трей
    #37363183
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtimBelowZero,

Покажи то, что ты сам реально сделал для достижения своей цели по данной тематике(в коде, а не на быдлофлудском языке)
т.е.? как что-то сделать, если вы сами не знаете, с чего начать? и никто на форумах инета по программированию не знает, или все молчат. сначала скажите, какая из вышеперечисленных теорий правильная? тогда хоть можно будет примерно знать, с чего начинать
...
Рейтинг: 0 / 0
и снова трей
    #37363248
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

Ты хочешь что бы за тебя кто то всё сделал и дал готовый код?
Какие ещё теории? Садись да набивай код! Если знаний не хватает открывай книжки и читай.
...
Рейтинг: 0 / 0
и снова трей
    #37363254
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: timtim
> Какие ещё теории? Садись да набивай код! Если знаний не хватает открывай книжки и читай.


+100500

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
и снова трей
    #37363292
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сколько же можно страдать муйней на форумах вместо того, чтобы почитать документацию производителя, которой вагон? Трей это обычный тулбал, имеющий обычный hWnd, значки это обычные кнопки, которые удаляются обычным SendMessage + TB_DELETEBUTTON. Все остальные старые идеи — клинический дебилизм, как, впрочем, и идея самОй "перспективной проги", разу уж эта фича в ней ключевая. Если я замечу, что какой-то быдлософт посягает на МОИ значки — в топку его, быстро, решительно.

За сим прошу дюка закрыть эту ересь.
...
Рейтинг: 0 / 0
и снова трей
    #37364179
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim, Игорь Горбонос, Antonariy,
бред. я не прошу написать код, а лишь сказать, какой из вышеперечисленный способов верный.
AntonariyСколько же можно страдать муйней на форумах вместо того, чтобы почитать документацию производителя, которой вагон? угу, вы почитали, и выложили BelowZeroкод, удаляющий иконку по порядковому номеру существует, его мне помог надыбать тим-тим в одном из прошлых многочисленных топиков., но авторна семёрке это пока не работает в этом-то и проблема. и странно, что вы считаете ересью всё, что пока что не знаете
...
Рейтинг: 0 / 0
и снова трей
    #37364185
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroв этом-то и проблема.И слава богу. Хотя бы семерка слегка защищена от быдлокодеров.
...
Рейтинг: 0 / 0
и снова трей
    #37364305
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

не понимаю в чём притензии. я попросил подсказать, в каком направлении двигаться. в ответ: "читай книжки", "это слишком просто", "может за тебя ещё код написать?", "полный бред", "неполучается?ну и хорошо", "а может твоя прога плохая?не будем помогать", "кому нужен этот быдло код" и тд и тп. что не так-то?.. не знаете - так и напишите, зачем выкладывать бессмысленное видео, которое ничем не помогает в решении проблемы, при этом указывая на бесполезность действий программы и защищённость виндоус7 (хотя никакая это ёпт не защита, а смесь незнаний программистов+мнимое улучшение виндоуса). при этом топики расстут на несколько страниц, хотя вопрос сформулирован чётко и ясно, и мне бы хватило 1 слова с указанием направления работы. потом топики закрываются за большое содержание флуда. а кто в этом виноват? конечно афффтор топика, т.к. ... хз почему.
...
Рейтинг: 0 / 0
и снова трей
    #37365563
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты просишь подсказки, как сделать говно. Причем, возможно, не себе, а посторонним.
...
Рейтинг: 0 / 0
25 сообщений из 120, страница 1 из 5
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / и снова трей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]