Форум: "WinAPI";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];
ВнизВопрос о иконке в трее Найти похожие ветки
← →
K.o.Z (2002-10-20 19:31) [0]Добрый вечер.
У меня вопрос такого характера:
как мне убрать иконку часов виндовз из трея и именно на её место поместить свою; причём, если в настройках Панель Задач\Свойства\Отображать часы - не стоит галочка, не показывать свою (и не показывать виндовсовскую) ...
Буду очень рад выслушать ваши предложения.
Спасибо
← →
Song (2002-10-21 09:18) [1]Убить процесс часов. Поможет, но ненадолго. :(
← →
K.o.Z (2002-10-25 22:05) [2]Как убить процесс часов?Если можно кусок кода.
← →
Cobalt (2002-10-26 02:35) [3]> Song © (21.10.02 09:18)
Не издевайтесь над новичком
>K.o.Z © (25.10.02 22:05)
Даю намек: это окно класса TrayClockWClass, является дочерним для окна класса Shell_TrayWnd. Более подробно - используйте WinSight32/Spy++
Ваша задача - внедриться в поток этого окна (через хук), закрепиться в нём(LoadLibrary), и заменить адрес оконной ф-ии(не забыв сохранить ее предыдущий адрес) - рисуйте что угодно. Если в настройках - "не отображать" - то окно не будут просить отрисовываться.
← →
TankMan (2002-10-26 15:27) [4]А примера конечно не будет :)
← →
Cobalt (2002-10-26 19:33) [5]Пример - TClockEx http://users.iafrica.com/d/da/dalen/tclockex.htm
8-)
Все остальное - ручками, ручками...
← →
K.o.Z (2002-10-26 23:24) [6]2 Cobalt
что-то всё очень сложно...
частично понял, НО... каким образом закрепиться в в потоке окна и заменить адрес оконной ф-ии... вот это поистине черная дыра
← →
Cobalt (2002-10-27 00:31) [7]Оооо, это, можно сказать, бич (один из) этого форума - Хуки.
Почитайте статью здесь, на сайте, внимательно. Потренируйтесь с хуками вообще, а потом уж приступайте к Вашей задаче.
← →
K.o.Z (2002-10-27 21:49) [8]то, что я с хуками не дружу это уже ясно...
нашел, как просто гепнуть иконку часов, НО как же на их место поставить свою ??
← →
Cobalt (2002-10-27 23:37) [9]>что-то всё очень сложно...
Дык, а ты что думал? Обойтись сотней строк кода? Библиотек/компонент для этого нет(каждая такая работа - ручная -> автор не спешит выкладывать код кому попало(кому НАДО - сами разберутся и получат ОГРОМНЫЙ опыт))
Концепцию я тебе дал, так что перед тобой - шикарное поле для деятельности.
Для начала - подружись с хуками. - без этого - никак(по крайней мере - в линейке Вин9Х, с NT не работал)
← →
Cobalt (2002-10-27 23:40) [10]Кстати, не объяснишь - че это за сленг такой - "гепнуть" ?
Явно не компьютерный...
← →
K.o.Z (2002-10-28 00:37) [11]разговорный сленг...
вот одного не пойму: заменить адрес оконной ф-ии
что это подразумевается ??
← →
Cobalt (2002-10-28 08:02) [12]Так, с хуками уже разобрался - молодец!
Тогда см. ф-ию SetWindowLong (GWL_WNDPROC)
← →
K.o.Z (2002-11-01 20:10) [13]2Cobalt
Вы говорили заменить на новую ф-цию, а как это осуществить, если я хочу, чтоб у часов была не такая же оконная ф-ция а др. специально написаная мною для них, как быть ?
← →
K.o.Z (2002-11-01 20:11) [14]2Cobalt
Вы говорили заменить на новую ф-цию;
а как это осуществить, если я хочу, чтоб у часов была не такая же оконная ф-ция как в моей проге, а др., специально написаная мною для них, как быть ? Как получить 32-разрядный адресс этой, другой, ф-ции ?
← →
Cobalt (2002-11-02 00:23) [15]Очень просто ;-))
code>Ptr:= @MyWindowFunc;
P.S.
Таки ты с хуками-то разобрался?
← →
K.o.Z (2002-11-02 03:25) [16]с использованием хуков вообще, более или менее
а вот в конкретном моём случаи, я так и не понимаю мою пошаговую цель в их использовании :(
зачем они мне вообще нужны, они ж только сообщения обрабатывают :)
читал справку Get\SetWindowLong, выяснил, как получить адрес ф-ции и как его заменить в принципе... пытался заменить, ничего не вышло :(
спрашивал знакомы, так те вообще сказали, что у меня ничего не выйдет...
вообщем я облазил "весь" инет и даже приближенного ответа на своё вопрос не нашел...
если можете объяснить мне более подробный алгоритм моих действий буду признателен
P.S.
если вы уж решили уделить мне немного времени :) так может перейдем на связь по средствам мыла ?
← →
Ihor Osov'yak (2002-11-02 18:58) [17]Сорри, что вмешиваюсь, разрешите мое имхо -
> более подробный алгоритм моих действий
См Cobalt © (26.10.02 02:35) - куда же подробнее...
Да, кстати внедриться в поток этого окна (через хук), закрепиться в нём(LoadLibrary), и заменить адрес оконной ф-ии(не забыв сохранить ее предыдущий адрес)
- это примерно на десять - двадцать минут работы (для программера "средней" квалификации, знакомого с соотв. тематикой ) - так что наберись терпения, ибо часть по отрисовке - в несколько раз, а может и на порядок в плане времени потянет - умножь на свой коэф. пропорциональности. Также это очень полезно решить самому - получишь хороший экспириенс ...
← →
Cobalt (2002-11-04 00:31) [18]Выслал подробную интсрукцию.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c