powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / и снова трей
120 сообщений из 120, показаны все 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
и снова трей
    #37365585
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyТы просишь подсказки, как сделать говно. Причем, возможно, не себе, а посторонним.
удаление иконки посторонней программы, которую я же запускаю, это "говно"? (уже опускаюсь до уровня вашего лексикона) главная цель программы - облегчить жизнь пользовалеля, чтоб ему самому не приходилось возиться с треем вручную. p\s ещё один ваш спам продвигает тему вверх по топику, и, возможно, однажды кто-то знающий VB поделится своим опытом и удивится вашим постам.
...
Рейтинг: 0 / 0
и снова трей
    #37365648
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опиши ситуацию, когда пользователю нужно "возиться с треем вручную".
И подробно расшифруй заключенный в кавычки текст.

PS. В семерке скрытые значки не удалить никак. Они прячутся в отдельном окне, которое даже не является коммон контролом.
Видимые значки удаляются точно так же как в XP.
...
Рейтинг: 0 / 0
и снова трей
    #37365793
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

вручную т.е. ручками. например, моя прога прога запустила чужую программу. в трей попала иконка этой чужой программы(если иконка добавлена только что, она появляется на панели задач, а не в качестве "скрытого значка". а дальше тупик - удалить значок этой чужой программы. можно удалить все значки по номеру, можно грохнуть трей, удалить винду, но хз как удалить этот один единственный значок на винде 7
...
Рейтинг: 0 / 0
и снова трей
    #37365810
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чужая программа сама контролирует своё поведение. если ей необходим значёк в трее, значит она его туда помещает. если у этой программы нет внешнего API или специфических параметров запуска без загрузки значка в трей, то всё твои действия по управлению извне этой программой являются шаманством.
...
Рейтинг: 0 / 0
и снова трей
    #37365831
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneчужая программа сама контролирует своё поведение. если ей необходим значёк в трее, значит она его туда помещает. если у этой программы нет внешнего API или специфических параметров запуска без загрузки значка в трей, то всё твои действия по управлению извне этой программой являются шаманством.
и? эт понятн, какой вывод?
...
Рейтинг: 0 / 0
и снова трей
    #37365834
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
программа, которой вы управлять пытаетесь, имеет внешний API или ещё какие-нибудь варианты управления извне?
если нет, то читайте лицензию на её использование
...
Рейтинг: 0 / 0
и снова трей
    #37365846
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удалить значок этой чужой программыЗачем?

хз как удалить этот один единственный значок на винде 7Узнать количество значков. Индекс последнего значка = количество - 1.
...
Рейтинг: 0 / 0
и снова трей
    #37365918
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy удалить значок этой чужой программыЗачем?

хз как удалить этот один единственный значок на винде 7Узнать количество значков. Индекс последнего значка = количество - 1.
читайте внимательно мои предыдущие высказывания. на ХР так и есть на семёрке какая-то хрень
...
Рейтинг: 0 / 0
и снова трей
    #37365982
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Семерки нет, проверить не могу, но там все тот же тулбар, фунционал которого от версии к версии только расширяется, не затрагивая старые функции. RTFM .

Так зачем удалять значок?
...
Рейтинг: 0 / 0
и снова трей
    #37367234
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

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

Это больше похоже на то, что ты хочешь спрятать значок какой-то платной сломаной утилиты, которую планируешь незаконно распространять в комплекте со своим софтом.

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

кароче лесом
...
Рейтинг: 0 / 0
и снова трей
    #37368077
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,
может поможет
...
Рейтинг: 0 / 0
и снова трей
    #37368091
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

Не то опять.
...
Рейтинг: 0 / 0
и снова трей
    #37368158
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

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

в коде кманда ударения:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub ShellTrayRemove()
 
   Dim nid As NOTIFYICONDATA
 
   If NOTIFYICONDATA_SIZE =  0  Then SetShellVersion
 
   With nid
      .cbSize = NOTIFYICONDATA_SIZE
      .hWnd = Form1.hWnd
      .uID = APP_SYSTRAY_ID 
   End With
 
   Call Shell_NotifyIcon(NIM_DELETE, nid)
 
End Sub
значит, чтобы удаоить чужую иконку нуно знать её .cbSize .hWnd и .uID. меня очень удивила строка .hWnd = Form1.hWnd. значит, хендл иконки в трее совпадает с хендлом запустившей её программы. насчёт .uID непонятно: что ещё за APP_SYSTRAY_ID. и с .cbSize туговато...
...
Рейтинг: 0 / 0
и снова трей
    #37371584
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero, так вынесете автору строки мозг
...
Рейтинг: 0 / 0
и снова трей
    #37371681
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

не очень понял о чём вы) осталось узнать:
1) .hWnd = Form1.hWnd т.е. хендл значка совпадает с хендлом проги?
2) .cbSize = NOTIFYICONDATA_SIZE - что за фигня?
3) .uID = APP_SYSTRAY_ID - а это что за фигня?
...
Рейтинг: 0 / 0
и снова трей
    #37371701
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

// Поля структуры:
// cbSize - размер структуры в байтах.

// hWnd - дескриптор окна, которое будет получать уведомляющие сообщения,
// ассоциированные с иконкой в трэе.

// uID - определенный приложением идентификатор иконки. Можно иметь
// множество иконок с одним hWnd и различными идентификаторами.

// uFlags - массив флагов, которые указывают какие из членов структуры
// содержат корректные значения:
// NIF_ICON - поле hIcon содержит корректное значение (позволяет создать
// иконку в трэе).
// NIF_MESSAGE - поле uCallbackMessage содержит корректное значение
// (позволяет получать сообщения от иконки в трэе).
// NIF_TIP - поле szTip содержит корректное значение (позволяет создать
// всплывающую подсказку для иконки в трэе).

// uCallbackMessage - определенный приложением идентификатор сообщения.
// Система использует этот идентификатор для посылки уведомляющих
// сообщений окну, дескриптор которого хранится в поле hWnd. Эти сообщения
// посылаются, когда происходит "мышиное" сообщение в прямоугольнике, где
// расположена иконка, или иконка выбирается или активизируется с помощью
// клавиатуры. Параметр сообщения wParam содержит при этом идентификатор
// иконки в трэе, где произошло событие, а параметр сообщения lParam -
// "мышиное" или клавиатурное сообщение, ассоциированное с событием.
// Пример события: щелчок мышки по иконке в трэе.

// hIcon - дескриптор иконки (иконку можно добавлять, заменять и удалять).

// szTip - указатель на завершающуюся нулем строку (char*) с текстом
// стандартной подсказки. Максимальный размер подсказки 64 символа,
// учитывая завершающий нол
...
Рейтинг: 0 / 0
и снова трей
    #37371706
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero, даже если заполните структуру как надо, всё равно мне кажется вы не сможете удалить значок. Так как скорее всего надо выполнить функцию API из контекста потока того приложения, где нужно удалить значок. Т.е. как минимум загрузить DLL в адресное пространство нужного процесса, и запустить удалённый поток
...
Рейтинг: 0 / 0
и снова трей
    #37371712
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя нет, сейчас проверил. На двух разных процессах, удаляет значок
...
Рейтинг: 0 / 0
и снова трей
    #37371726
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,
дерзайте, взято отсюда: http://forum.codenet.ru/archive/index.php/t-3535.html
...
Рейтинг: 0 / 0
и снова трей
    #37371731
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь пример на Delphi как получить информацию об иконках в трее.
...
Рейтинг: 0 / 0
и снова трей
    #37371739
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точно так, в Сообщ. #21 от 13.10.06, 15:55, вещь, Дельфи в ВБ 6 и всё
...
Рейтинг: 0 / 0
и снова трей
    #37371786
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VSVLAD Здесь пример на Delphi как получить информацию об иконках в трее.
был на этом сайте. смущает то, что код работает только на ХР, написан не на VB.
В принципе осталось последнее услилие:
1) .hWnd = Form1.hWnd т.е. хендл значка совпадает с хендлом проги?
2) .cbSize = NOTIFYICONDATA_SIZE - как узнать размер структуры в байтах(я так понял, это размер значка в трее чужой проги)?
3) .uID = APP_SYSTRAY_ID - что делать с индетефикатором\как его получить\можно липомлать смс на удаления без ID или в виде *
...
Рейтинг: 0 / 0
и снова трей
    #37371787
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroВ принципе осталось последнее услилие:
неправильно выразился... с этого тема когда-то начиналось, на этой же ступени после пяти топиков тема осталась(
...
Рейтинг: 0 / 0
и снова трей
    #37371805
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там и останется.

1) У проги нет хендлов. У значков в трее нет хэндлов, потому что это кнопки тулбара. Хендл есть у окна.
2) len(nid)
3) Ничего, он имеет смысл только в контексте проги, владеющей значком.

Связь значка с программой находится в недрах explorer.exe, в которые тебе не попасть никогда. Забудь.

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

ухахахахахах) спс, поднялось настроение)
1) Antonariy У проги нет хендлов. У значков в трее нет хэндлов, потому что это кнопки тулбара. Хендл есть у окна
тогда зачем при удалении своего значка указывать BelowZero.hWnd = Form1.hWnd
2) ... не понимаю, как это юзать
3) основная задача ID - возможность управлять одной программой несколькими значками в трее, а не параноическая защита от внешних воздействий. значит должен быть вполне легальный способ без плясок с бубном подставления "любого" ID? либо выяснения постоянного ID
ну и на последок... вы утверждаете, что вся мои идеи - фигня(хотя все мои проекты кроме этого успешно доделаны и работают). Тогда почему на Дельфи такую программу уже создали? или дельфи круче бейсика? или на дельфи все с бараньей упёртостью? так кому из нас нехватает знаний?) риторический вопрос
...
Рейтинг: 0 / 0
и снова трей
    #37372324
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда почему на Дельфи такую программу уже создали?Потому что там создали не такую программу. Там с треем работают как я показывал — как с тулбаром.
или дельфи круче бейсика? или на дельфи все с бараньей упёртостью? так кому из нас нехватает знаний?) риторический вопрос
...
Рейтинг: 0 / 0
и снова трей
    #37372350
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyТам с треем работают как я показывал — как с тулбаром
в каком из своих смс, осмеивающих мои программу и её цели, вы это показывали?
...
Рейтинг: 0 / 0
и снова трей
    #37372362
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

Ты книжки не читаешь потому что не умеешь?
...
Рейтинг: 0 / 0
и снова трей
    #37372405
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtimBelowZero,

Ты книжки не читаешь потому что не умеешь?
логическая цепочка:
1 вариант на VB ещё никто не сделал такую программу ---> никто не умеет делать такую программу ---> никто не сможет написать "книжку"
2 вариант кто-то написал книжку + на VB ещё никто не сделал такую программу ---> никто не нашёл эту книжку ---> я не найду эту книжку
...
Рейтинг: 0 / 0
и снова трей
    #37372453
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

странная логика
...
Рейтинг: 0 / 0
и снова трей
    #37372467
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroAntonariyТам с треем работают как я показывал — как с тулбаром
в каком из своих смс, осмеивающих мои программу и её цели, вы это показывали?В этом .
...
Рейтинг: 0 / 0
и снова трей
    #37372470
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3 вариант на VB ещё никто не сделал такую программу ---> никому нафиг не сдалась такая программа

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

ухахах почитайте ниже своего поста, что я написал насчёт вашего фильма. то, чему вы пытались научить, показывал тим-тим несколько топиков назад. это же я написал на первой странице этого топика 10995598
...
Рейтинг: 0 / 0
и снова трей
    #37372513
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy3 вариант на VB ещё никто не сделал такую программу ---> никому нафиг не сдалась такая программа

А книжек про тулбар более чем достаточно.
флуд ---> спам ---> удаление топика ---> злость на форум и участников с моей стороны + падение рейтингов и посещаемости форума профессионалами ---> отсутствие помощи отвечавшим
лучше
объективная инфа ---> реальная помощь ---> благодарность с моей стороны ---> моральное удовлетворение с вашей стороны. ?))
...
Рейтинг: 0 / 0
и снова трей
    #37372530
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroобъективная инфа

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

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

Так тебе готовое решение нужно или что?
...
Рейтинг: 0 / 0
и снова трей
    #37372604
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtimBelowZero,

Так тебе готовое решение нужно или что?
мне нужен ответ на вопросы:
BelowZero1) .hWnd = Form1.hWnd т.е. хендл значка совпадает с хендлом проги?
2) .cbSize = NOTIFYICONDATA_SIZE - как узнать размер структуры в байтах(я так понял, это размер значка в трее чужой проги)?
3) .uID = APP_SYSTRAY_ID - что делать с индетефикатором\как его получить\можно липомлать смс на удаления без ID или в виде *
...
Рейтинг: 0 / 0
и снова трей
    #37372612
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

Тебе же Antonariy ответил 11042049
Что непонятно?
...
Рейтинг: 0 / 0
и снова трей
    #37372669
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

1) .hWnd = Form1.hWnd т.е. хендл окна кнопки тулбара совпадает с хендлом проги? и можно получить хендл так:
dim a as string
a = shell ("c:\.........)
.hwnd = a '?
2) .cbSize = NOTIFYICONDATA_SIZE - как юзать len(nid) ?
3) .uID = APP_SYSTRAY_ID - что делать с индетефикатором\как его получить\можно липомлать смс на удаления без ID или в виде *
...
Рейтинг: 0 / 0
и снова трей
    #37372710
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

От того что ты не пытаешься вникнуть в суть, а просто тупо повторяешь вопросы врятли у тебя прибавиться знаний.
Что такое nid ты понял?
Про функцию len прочти в книжке.
...
Рейтинг: 0 / 0
и снова трей
    #37372728
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero — этот ник символизирует величину IQ что ли?
Я не вижу другой причины, почему ты игнорируешь единственное верное направление и упорно штурмуешь тупик.

Прога на дельфи открывает процесс эксплорера с правами отладчика и работает с кнопками его тулбара от его же имени.
Тоже самое можно сделать на VB.

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

реальная помощь ---> Ты страдаешь херней. Моя помощь состоит в том, чтобы любым способом заставить тебя это осознать, а не дать тебе еще херни, которую ты выпрашиваешь.

мне нужен ответ на вопросы:Для особо одаренных повторяю еще раз, расширенно:
1) hWnd есть только у ОКОН . Иконки в трее окнами НЕ ЯВЛЯЮТСЯ , они являются КНОПКАМИ ТУЛБАРА . hWnd окна, которое получает сообщения от конкретной кнопки тулбара, содержится в свойствах самой кнопки . Эти свойства может прочитать только владелец кнопки — explorer.exe . Окно, котрое получает сообщение от кнопки, принаждлежит какому-то процессу . Этому процессу может принадлежать много окон. Shell возвращает идентификатор созданного процесса .
2) .cbSize = Len(nid)
3) Он тебе НЕ НУЖЕН .
...
Рейтинг: 0 / 0
и снова трей
    #37372796
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мой ход мысли:
1) узнать способ, как программа удаляет из трея свою иконку. способ приведён постами выше ЦЭ и в прошлых топиках. для этого нуно знать .hWnd .cbSize .uID. логично предположить, что я попытаюсь найти, чему равно эти данные в посторонней проге. над этим мучаюсь уже несколько топиков
2) попутно пробуем альтернативные способы: удаление иконки (кнопки) по её порядковому номеру. способ приведён тим-тим в прошлом топике, не семёрке не даёт нужного эффекта

AntonariyЯ не вижу другой причины, почему ты игнорируешь единственное верное направление
ваше направление - приведённый в прошлых постах вариант тим-тим. он же указан как вариант на первой странице топика. чтобы пойти этим способом, нуно суметь определить, какая кнопка относится к какой программе. либо удалять кнопки вслепую, на авось, по порядковому номеру кнопки, что показано в выложенном вами фильме.
вопрос: как узнать, какая кнопка относится к нужной посторонней программе?
...
Рейтинг: 0 / 0
и снова трей
    #37372879
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или другими словами:
1) как прочитать hWnd окна посторонней проги, который содержится в свойствах самой кнопки от лица владельца кнопки — explorer.exe ?
Код: plaintext
1.
2.
3.
4.
ret = FindWindow("Shell_TrayWnd", "")
    ret = FindWindowEx(ret,  0 , "TrayNotifyWnd", vbNullString)
    ret = FindWindowEx(ret,  0 , "SysPager", vbNullString)
    ret = FindWindowEx(ret,  0 , "ToolbarWindow32", vbNullString)
    '''следующая строчка как-то должна выпытать у кнопок хендлы окон, к которым они готносятся

2) как узнать хендл окна, который принадлежит известному процессу?
...
Рейтинг: 0 / 0
и снова трей
    #37372932
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: BelowZero
> или другими словами:
> 1) ...?
> 2) ...?
3) ... ?
....
n) ... ?

http://www.ozon.ru/context/detail/id/83194/]Эта книга не является сборником полезных советов и приемов, хотя
в ней, вероятно, описаны тысячи разных приемов. Она не была задумана как энциклопедия самостоятельных фрагментов
программного кода, которые бездумно подключаются к приложению - хотя многие ее примеры можно использовать подобным
образом. Эта книга написана для того, чтобы научить читателя эффективно использовать Win32 API в Visual
Basic, даже если ему еще никогда не приходилось этого делать - вы станете настоящим экспертом в области Win32, если
приложите к этому достаточно усилий. Для программистов, разработчиков, специалистов и студентов.




Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
и снова трей
    #37373035
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мой ход мысли: Ты должен был сначала прочитать справку по функции, создающей иконку, и по ее параметрам. А потом дать ход мысли и понять, что она для тебя бесполезна.

BelowZeroили другими словами:
1) как прочитать hWnd окна посторонней проги, который содержится в свойствах самой кнопки от лица владельца кнопки — explorer.exe ? Внимательно прочитать исходник программы на дельфи. Особенно procedure TFWSysTrayInfo.DoGetIconsInfo и ее комментарии. На VB это будет выглядеть почти 1-в-1.

2) как узнать хендл окна, который принадлежит известному процессу?Вопрос поставлен некорректно. Известному процессу пренадлежит куча окон. Тебе любое? Где гарантия, что именно оно связано с кнопкой?
Не нужно оно вообще. Нужно наоборот, проверить все кнопки и определить, какой из хэндлов принадлежит нужному процессу.
...
Рейтинг: 0 / 0
и снова трей
    #37373151
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[SRC Antonariy]Внимательно прочитать исходник программы на дельфи[/src]не разираюсь в дельфи( совсем...
[SRC Antonariy]Вопрос поставлен некорректно[/SRC] вы написали то же самое, тока с другой стороны. от этого ничего не меняется) разве что удобство звучания. хотя на коде, возможно, способом оформления как определить, какой из хэндлов принадлежит нужному процессу?
...
Рейтинг: 0 / 0
и снова трей
    #37373171
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

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

вник ли? за несколько месяцев и кучу многостраничных топиков невозможно остаться "невникнутым".
timtimТак ты прочитал хоть что ни будь где прочитал, если на VB никто толком ничего не знает даже в теории, и никто на VB не создавал ничего похожего... переводить дельфи в vb не в состоянии
...
Рейтинг: 0 / 0
и снова трей
    #37373194
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не разираюсь в дельфи( совсем...Для того чтобы прочитать названия нужных апи-функций, типов и констант и русские комментарии, не нужно в нем разбираться. Совсем.
вы написали то же самоеНе тоже самое. У тебя проблемы с восприятием и изложением из-за нехватки знаний, поэтому кажется, что разницы нет.
от этого ничего не меняется)Меняется все. Ты собирался плясать от процесса и заплясал бы в никуда.

как определить, какой из хэндлов принадлежит нужному процессуПроще пареной репы — GetWindowThreadProcessId. Однако она для тебя бесполезна пока ты не научился выдергивать хэндлы из эксплорера.

где прочитал, если на VB никто толком ничего не знает даже в теории,Причем тут VB? Это вопрос знания не языка, а принципов работы операционной системы Windows. Код на разных языках будет отличаться только синтаксисом, но не сутью — функции для работы с системой и принципы их использования одни и те же для всех языков.
...
Рейтинг: 0 / 0
и снова трей
    #37373210
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот полный код, который возвращает название файла, из которого был запущен процесс, которому пренадлежит указанный hWnd.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
Option Explicit
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function NtQueryInformationProcess Lib "ntdll" (ByVal hProcess As Long, ByVal ProcessInformationClass As Long, ProcessInformation As Any, ByVal ProcessInformationLength As Long, ReturnLength As Long) As Long

Private Type PROCESS_BASIC_INFORMATION
    ExitStatus As Long
    PebBaseAddress As Long  'points to a structure too long to declare
    AffinityMask As Long
    BasePriority As Long
    UniqueProcessId As Long
    InheritedFromUniqueProcessId As Long
End Type

Private Type LIST_ENTRY
    pFlink As Long
    pBlink As Long
End Type

Private Type UNICODE_STRING
    Length As Integer
    MaximumLength As Integer
    Buffer As Long
End Type

Private Type LDR_MODULE
    InLoadOrderModuleList As LIST_ENTRY
    InMemoryOrderModuleList As LIST_ENTRY
    InInitializationOrderModuleList As LIST_ENTRY
    BaseAddress As Long
    EntryPoint As Long
    SizeOfImage As Long
    FullDllName As UNICODE_STRING
    BaseDllName As UNICODE_STRING
    Flags As Long
    LoadCount As Integer
    TlsIndex As Integer
    HashTableEntry As LIST_ENTRY
    TimeDateStamp As Long
End Type

Private Const PROCESS_QUERY_INFORMATION = &H400
Private Const PROCESS_VM_READ = &H10


Private Sub Command1_Click()
Dim hWnd As Long, PID As Long, hProcess As Long
Dim pbi As PROCESS_BASIC_INFORMATION, dummy As Long
Dim ProcessModuleInfo As Long, NextModule As Long
Dim ModuleData As LDR_MODULE
Dim FileName As String

    hWnd = Val(Text1)

    If hWnd =  0  Then Exit Sub
    GetWindowThreadProcessId hWnd, PID
    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ,  0 , PID)
    If hProcess =  0  Then Exit Sub
    NtQueryInformationProcess hProcess,  0 , pbi, Len(pbi), dummy
    ReadProcessMemory hProcess, pbi.PebBaseAddress +  12 , ProcessModuleInfo,  4 , dummy
    ReadProcessMemory hProcess, ProcessModuleInfo +  20 , NextModule,  4 , dummy
    Do
        ReadProcessMemory hProcess, NextModule -  8 , ModuleData, Len(ModuleData), dummy
        NextModule = ModuleData.InMemoryOrderModuleList.pFlink
    Loop Until ModuleData.BaseAddress = &H400000
    FileName = Space$(ModuleData.FullDllName.Length \  2 )
    ReadProcessMemory hProcess, ModuleData.FullDllName.Buffer, ByVal StrPtr(FileName), ModuleData.FullDllName.Length, dummy
    CloseHandle hProcess

    Debug.Print FileName
End Sub
...
Рейтинг: 0 / 0
и снова трей
    #37373242
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyТы собирался плясать от процесса и заплясал бы в никуда.
На VB да.
...
Рейтинг: 0 / 0
и снова трей
    #37373291
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Antonariy
> Вот полный код,

Зачем? Этого кода валяется в инете куча мала. Нужно только правильно спросить у гугля. Ты ему много раз говорил что
нужно спрашивать. Толку никакого.

Сейчас последует вопрос как узнать hWnd произвольного окна. Или ты собираешся пересказывать с выражением и на
ночь
избранные главы из Эппелмана?

P.S. Как уже забодали
мегапрограммеры со своими
мегапрограммами

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

пасяп)))
AntonariyОднако она для тебя бесполезна пока ты не научился выдергивать хэндлы из эксплорера.
вот так?
Код: plaintext
1.
2.
3.
4.
5.
ret = FindWindow("Shell_TrayWnd", "")
ret = FindWindowEx(ret,  0 , "TrayNotifyWnd", vbNullString)
ret = FindWindowEx(ret,  0 , "SysPager", vbNullString)
ret = FindWindowEx(ret,  0 , "ToolbarWindow32", vbNullString)
qwer = SendMessage(ret, TB_BUTTONCOUNT,  0 ,  0 ) 'узнать количество иконок в трее
'затем в цикле по порядковому номеру как-то узнать хендлы окон, к которым они относятся
...
Рейтинг: 0 / 0
и снова трей
    #37373323
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
Нет-нет, я только пинками зафиксирую верное направление :) Идти по нему автор будет сам.

вот так?Нет. Так как в дельфевой программе.
...
Рейтинг: 0 / 0
и снова трей
    #37373379
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

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

Попробуй запусти хотя бы.
...
Рейтинг: 0 / 0
и снова трей
    #37373394
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

запустил - не работает, даже не выводит список значокв трее, т.е. обратиться к трею таким способом, который укан в проекте, не получится. и автор проекта дельфи сам пишет Rouseпока это только для ХР... Для остальных нужен немного другой подход...
...
Рейтинг: 0 / 0
и снова трей
    #37373411
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начни с XP.
...
Рейтинг: 0 / 0
и снова трей
    #37373418
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

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

http://rouse.drkb.ru/files/fwsystrayinfo.zip
Это не работает у тебя?
...
Рейтинг: 0 / 0
и снова трей
    #37373434
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя да, там где от быдл всяких заглушка стоит то не работает.
...
Рейтинг: 0 / 0
и снова трей
    #37373438
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

эммм... а как это запустить?))))
...
Рейтинг: 0 / 0
и снова трей
    #37373443
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

у меня нет дельфи на компе
...
Рейтинг: 0 / 0
и снова трей
    #37373451
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
и снова трей
    #37373460
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

у меня на компе 2 винды. на ХР работает, на семёрке нет
...
Рейтинг: 0 / 0
и снова трей
    #37373465
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

7-ка х64 или сборка от быдл?
Что именно не работает?
Будь конкретнее.
...
Рейтинг: 0 / 0
и снова трей
    #37373466
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

винда ХР профешанал работает, семёрка х64 не работает
...
Рейтинг: 0 / 0
и снова трей
    #37373467
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

Значит не судьба!
Модифицируй код под свои нужды.
ЧТО ТЕБЕ ЕЩЁ НАДО?
...
Рейтинг: 0 / 0
и снова трей
    #37373468
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*не отображаются значки, подробности, путь. вместо реальных значок втыкнуты значки самой программы(семёрка с молнией) и корявый путь самой программы
...
Рейтинг: 0 / 0
и снова трей
    #37373470
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero*не отображаются значки, подробности, путь. вместо реальных значок втыкнуты значки самой программы(семёрка с молнией) и корявый путь самой программы

Я понял!
...
Рейтинг: 0 / 0
и снова трей
    #37373472
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

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

Что значит нужен?
...
Рейтинг: 0 / 0
и снова трей
    #37373479
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

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

Книжку по Delphi прочти.
...
Рейтинг: 0 / 0
и снова трей
    #37373486
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

................ (((((
...
Рейтинг: 0 / 0
и снова трей
    #37373495
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

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

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

так мне нужен чел, знающий и Vb и дельфи одновременно)
так нельзя? 11046419
Так можно. Сможешь?
В качестве чела Нуно может выступить.
...
Рейтинг: 0 / 0
и снова трей
    #37373534
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

ещё раз нуно=нужно
прога=программа
цы=P\S и тд. стандартный задротский язык
...
Рейтинг: 0 / 0
и снова трей
    #37373542
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

X
...
Рейтинг: 0 / 0
и снова трей
    #37373543
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtimBelowZero,

X
что это? я такое видел на заборе, когда на "У" и "Й" балончика или терпения не хватало...
...
Рейтинг: 0 / 0
и снова трей
    #37373548
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

У ЦЭ спроси.
...
Рейтинг: 0 / 0
и снова трей
    #37373566
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробую так
Код: plaintext
1.
2.
3.
4.
ret = FindWindow("Shell_TrayWnd", "")
ret = FindWindowEx(ret,  0 , "TrayNotifyWnd", vbNullString)
ret = FindWindowEx(ret,  0 , "SysPager", vbNullString)
ret = FindWindowEx(ret,  0 , "ToolbarWindow32", vbNullString)
SendMessage(ret, TB_DELETEBUTTON, ????, vbNullString)
ток что-то не соображу, что вставить вместо ????. название кнопки?
...
Рейтинг: 0 / 0
и снова трей
    #37373697
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попытался скачать дельфи - с 4 попытки смог - запустил - от переусердия полетела седьмая винда... попробовал на ХР - тоже на .уй всё снеслось. Ладно хоть семёрка восстанавливается. е.ал я это программирование во все щели. можете забанить топик
...
Рейтинг: 0 / 0
и снова трей
    #37373722
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroе.ал я это программирование во все щелинаконец-то
Кажется, Антонарий таки смог подсказать Белову верную дорогу
...
Рейтинг: 0 / 0
и снова трей
    #37373783
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор как бы говорит нам, каким из подаренных природой органов он таки научился пользоваться.
...
Рейтинг: 0 / 0
и снова трей
    #37373817
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нашёл нужный отhttp://www.sql.ru/forum/actualpost.aspx?bid=22&tid=867083&mid=0&p=5рывок кода на дельфи
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
 const 
  TB_GETBUTTON     = WM_USER +  23 ;
  TB_BUTTONCOUNT   = WM_USER +  24 ;
  TB_GETBUTTONTEXT = WM_USER +  75 ;
  TB_DELETEBUTTON  = WM_USER +  22 ;
 type 
  TTBBUTTON =  record 
    iBitmap : Integer;
    idCommand : Integer;
    fsState : byte;
    fsStyle : byte;
     {$IFDEF WIN64} 
    hReserved :  array  [ 0 .. 5 ]  of  byte;
     {$ELSE} 
     {$IFDEF WIN32} 
    hReserved :  array  [ 0 .. 1 ]  of  byte;
     {$ENDIF} 
     {$ENDIF} 
    dwData : Pointer;
    iString : PChar;
   end ;
 procedure  DeleteToolBarButton( const  ButtonText : WideString);
 const 
  BUFFER_SIZE = $ 1000 ;
 var 
  OpProc : THandle;
  ProcID : THandle;
  ToolBar : THandle;
  Window : HWND;
  ButtonsCount : integer;
  i : Integer;
  Buffer : Pointer;
  DButton : TTBButton;
  RBytes : Cardinal;
  BTextLength : Integer;
  BText : WideString;
 begin 
  ToolBar := FindWindow('Shell_TrayWnd',  nil );
  ToolBar := FindWindowEx(ToolBar,  0 , 'ReBarWindow32',  nil );
  ToolBar := FindWindowEx(ToolBar,  0 , 'MSTaskSwWClass',  nil );
  ToolBar := FindWindowEx(ToolBar,  0 , 'ToolbarWindow32',  nil );
   if  ToolBar =  0   then 
    Exit;
  ButtonsCount := SendMessage(ToolBar, TB_BUTTONCOUNT,  0 ,  0 );
  GetWindowThreadProcessId(ToolBar, @ProcID);
  OpProc := OpenProcess(PROCESS_ALL_ACCESS, False, ProcID);
   try 
    Buffer := VirtualAllocEx(OpProc,  nil , BUFFER_SIZE, MEM_COMMIT, PAGE_READWRITE);
     for  i :=  0   to  ButtonsCount  do 
       begin 
        SendMessage(ToolBar, TB_GETBUTTON, i, Integer(Buffer));
        RBytes :=  0 ;
        ReadProcessMemory(OpProc, Buffer, @DButton, SizeOf(TTBButton), RBytes);
        ReadProcessMemory(OpProc, DButton.dwData, @Window, SizeOf(HWND), RBytes);
         if  Window =  0   then 
          Continue;
        BTextLength := SendMessage(ToolBar, TB_GETBUTTONTEXT, DButton.idCommand, Integer(Buffer));
        SetLength(BText, BTextLength);
        ReadProcessMemory(OpProc, Buffer, @(BText[ 1 ]), BTextLength * SizeOf(BText[ 1 ]), RBytes);
         if  BText = ButtonText  then 
           begin 
            SendMessage(ToolBar, TB_DELETEBUTTON, i,  0 );
            Break;
           end ;
       end ;
   finally 
    VirtualFreeEx(OpProc, Buffer,  0 , MEM_RELEASE);
    CloseHandle(OpProc);
   end ;
 end ;
 procedure  TForm1.Button1Click(Sender: TObject);
 begin 
  DeleteToolBarButton('Диспетчер задач Windows');
 end ;
попробовал перевести в vb - какая-то муть получается. не поможете?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
Option Explicit
Private Const WM_USER = &H400
Private Const TB_GETBUTTON = WM_USER +  23 
 Private Const TB_BUTTONCOUNT = WM_USER +  24 
 Private Const TB_GETBUTTONTEXT = WM_USER +  75 
 Private Const TB_DELETEBUTTON = WM_USER +  22 
    

Private Type WIN32_FIND_DATA
  TTBButton As Variant
    iBitmap As Long 'Integer;
    idCommand As Long ' Integer;
    fsState As Byte
    fsStyle As Byte
    '{$IFDEF WIN64}
    'hReserved : array [0..5] of byte;
    '{$ELSE}
    '{$IFDEF WIN32}
    'hReserved : array [0..1] of byte;
    '{$ENDIF}
    '{$ENDIF}
    dwData As Variant 'Pointer;
    iString As Variant ' PChar;
  End Type
  
  Private Function DeleteToolBarButton(ButtonText As Long)

  '

  Private Const BUFFER_SIZE = &O1000
Var
Dim OpProc As Variant
Dim ProcID As Variant
Dim ToolBar As Variant
Dim Window As Variant
Dim ButtonsCount As Variant
Dim i As Variant
Dim Buffer As Variant
Dim DButton As Variant
Dim RBytes As Variant
Dim BTextLength As Variant
Dim BText As Variant
  'OpProc : THandle;
  'ProcID : THandle;
  'ToolBar : THandle;
  'Window : HWND;
  'ButtonsCount : integer;
  'i : Integer;
  'Buffer : Pointer;
  'DButton : TTBButton;
  'RBytes : Cardinal;
  'BTextLength : Integer;
  'BText : WideString;
  ToolBar = FindWindow(Shell_TrayWnd, vbNullString)
  ToolBar = FindWindowEx(ToolBar,  0 , ReBarWindow32, vbNullString)
  ToolBar = FindWindowEx(ToolBar,  0 , MSTaskSwWClass, vbNullString)
  ToolBar = FindWindowEx(ToolBar,  0 , ToolbarWindow32, vbNullString)
  If ToolBar =  0  Then Exit Sub
  ButtonsCount = SendMessage(ToolBar, TB_BUTTONCOUNT,  0 ,  0 )
  GetWindowThreadProcessId ToolBar, ProcID
  OpProc = OpenProcess(PROCESS_ALL_ACCESS, False, ProcID)
  Buffer = VirtualAllocEx(OpProc, vbNullString, BUFFER_SIZE, MEM_COMMIT, PAGE_READWRITE)
    For i =  0  To ButtonsCount
        SendMessage ToolBar, TB_GETBUTTON, i, Val(Buffer)
        RBytes =  0 
        ReadProcessMemory OpProc, Buffer, DButton, SizeOf(TTBButton), RBytes
        ReadProcessMemory OpProc, DButton.dwData, Window, SizeOf(hWnd), RBytes
        If Window =  0  Then
        BTextLength = SendMessage(ToolBar, TB_GETBUTTONTEXT, DButton.idCommand, Val(Buffer))
        SetLength BText, BTextLength
        ReadProcessMemory OpProc, Buffer, BText, BTextLength * SizeOf(BText), RBytes
            If BText = ButtonText Then
            SendMessage ToolBar, TB_DELETEBUTTON, i,  0 
            'Break;
            End If
        End If
Next i
    VirtualFreeEx OpProc, Buffer,  0 , MEM_RELEASE
    CloseHandle OpProc
End Function




Private Sub Command1_Click()
DeleteToolBarButton Text1.Text
End Sub
...
Рейтинг: 0 / 0
и снова трей
    #37373868
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переведённый код, работает не совсем корректно. Нужно разобраться с типами. Также изменил имена классов, так как для кнопок "окна уведомлений" они другие, чем описаны. (Описаны классы для получения кнопок с панели задач) Может будет время я или кто-то другой скорректирует

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
Option Explicit

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpszText1 As String, ByVal lpszText2 As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Declare Function VirtualAllocEx Lib "kernel32.dll" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, ByVal lpBuffer As Long, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long


Private Const WM_USER As Long = &H400

Private Const TB_GETBUTTON = WM_USER +  23 
Private Const TB_BUTTONCOUNT = WM_USER +  24 
Private Const TB_GETBUTTONTEXT = WM_USER +  75 
Private Const TB_DELETEBUTTON = WM_USER +  22 

Private Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000
Private Const SYNCHRONIZE As Long = &H100000
Private Const PROCESS_ALL_ACCESS As Long = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)

Private Const iBuffer_SIZE As Long = &H1000
Private Const MEM_COMMIT As Long = &H1000
Private Const PAGE_READWRITE As Long = &H4

Private Type TTBButton
    iBitmap     As Long
    idCommand   As Long
    fsState     As Byte
    fsStyle     As Byte
    hReserved   As Integer
    dwData      As Long
    iString     As Long
End Type

Public Sub DeleteToolBarButton(ByVal ButtonText As String)
    Dim hOpProc       As Long
    Dim ProcID        As Long, ThreadID As Long
    Dim ToolBar       As Long
    Dim Window        As Long
    Dim ButtonsCount  As Long
    Dim I             As Long
    Dim iBuffer       As String
    Dim DButton       As TTBButton
    Dim RBytes        As Long
    Dim BTextLength   As Long
    Dim BText         As String
    
    Dim sBuff As String
    
    ToolBar = FindWindow("Shell_TrayWnd", vbNullString)
    ToolBar = FindWindowEx(ToolBar,  0 , "TrayNotifyWnd", vbNullString)
    ToolBar = FindWindowEx(ToolBar,  0 , "SysPager", vbNullString)
    ToolBar = FindWindowEx(ToolBar,  0 , "ToolbarWindow32", vbNullString)
    If ToolBar =  0  Then Exit Sub
    
    'ПИД
    ProcID = Shell("taskmgr.exe", vbMinimizedNoFocus)
    ButtonsCount = SendMessage(ToolBar, TB_BUTTONCOUNT, ByVal  0 &, ByVal  0 &)
    ThreadID = GetWindowThreadProcessId(ToolBar, ProcID)
    hOpProc = OpenProcess(PROCESS_ALL_ACCESS, False, ProcID)
    
    iBuffer = VirtualAllocEx(hOpProc, ByVal  0 &, iBuffer_SIZE, MEM_COMMIT, PAGE_READWRITE)
    
    For I =  0  To ButtonsCount
        Call SendMessage(ToolBar, TB_GETBUTTON, I, iBuffer)
        RBytes =  0 
        
        Call ReadProcessMemory(hOpProc, iBuffer, VarPtr(DButton), Len(DButton), RBytes)
        Call ReadProcessMemory(hOpProc, DButton.dwData, VarPtr(Window),  4 , RBytes)
        
        If Window =  0  Then GoTo Continue
          
        BTextLength = SendMessage(ToolBar, TB_GETBUTTONTEXT, DButton.idCommand, iBuffer)
        
        If BTextLength >  0  Then
            BText = Space(BTextLength)
    
            Call ReadProcessMemory(hOpProc, iBuffer, StrPtr(BText), BTextLength, RBytes)

            If BText = ButtonText Then
                Call SendMessage(ToolBar, TB_DELETEBUTTON, I,  0 )
                Exit For
            End If
        End If
Continue:
      Next

    'Call VirtualFreeEx(hOpProc, iBuffer, 0, MEM_RELEASE) '<< Declare
    Call CloseHandle(hOpProc)
End Sub
 
Private Sub Form_Load()
    Call DeleteToolBarButton("Диспетчер задач Windows")
End Sub
...
Рейтинг: 0 / 0
и снова трей
    #37373887
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VSVLAD,

огромное спасибо))

только что теперь вписывать в Call DeleteToolBarButton("?????"), ведь кнопки в трее не имеют названий. наверное. (я хочу удалить иконку Skype)
...
Рейтинг: 0 / 0
и снова трей
    #37380465
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ммм изначальный код на дельфи убирал иконку(кнопку) с панели задач по имени этой иконки(кнопки). это имя ясно прописывается при наведении мышкой на значок. переделанный код, любезно предоставленный VSVLAD, должен удалять значок не с панели задач, а из трея по имени значка(кнопки). но как узнать имя кнопки в трее? нуно удалить иконку(кнопку) скайпа. т.е.
Код: plaintext
Call DeleteToolBarButton("тут требуется вписать название кнопки скайпа в трее. но откуда я его знаю")
...
Рейтинг: 0 / 0
120 сообщений из 120, показаны все 5 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / и снова трей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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