Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос о иконке в трее [D5, D6, Win95/98, WinME, NT4, WinXP]


K.o.Z ©   (2002-10-20 19:31:00) 

Добрый вечер.
У меня вопрос такого характера:
как мне убрать иконку часов виндовз из трея и именно на её место поместить свою; причём, если в настройках Панель Задач\Свойства\Отображать часы - не стоит галочка, не показывать свою (и не показывать виндовсовскую) ...

Буду очень рад выслушать ваши предложения.

Спасибо


Cobalt   (2002-11-04 00:31:00) [1]

Выслал подробную интсрукцию.


Ihor Osov'yak   (2002-11-02 18:58:00) [2]

Сорри, что вмешиваюсь, разрешите мое имхо -

> более подробный алгоритм моих действий



См Cobalt © (26.10.02 02:35) - куда же подробнее...

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


K.o.Z   (2002-11-02 03:25:00) [3]

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

если можете объяснить мне более подробный алгоритммоих действий буду признателен

P.S.
если вы уж решили уделить мне немного времени :) так может перейдем на связь по средствам мыла ?


Cobalt   (2002-11-02 00:23:00) [4]

Очень просто ;-))
code>Ptr:= @MyWindowFunc;
P.S.
Таки ты с хуками-то разобрался?


K.o.Z   (2002-11-01 20:11:00) [5]

2Cobalt
Вы говорили заменить на новую ф-цию;
а как это осуществить, если я хочу, чтоб у часов была не такая же оконная ф-ция как в моей проге, а др., специально написаная мною для них, как быть ? Как получить 32-разрядный адресс этой, другой, ф-ции ?


K.o.Z   (2002-11-01 20:10:00) [6]

2Cobalt
Вы говорили заменить на новую ф-цию, а как это осуществить, если я хочу, чтоб у часов была не такая же оконная ф-ция а др. специально написаная мною для них, как быть ?


Cobalt   (2002-10-28 08:02:00) [7]

Так, с хуками уже разобрался - молодец!
Тогда см. ф-ию SetWindowLong (GWL_WNDPROC)


K.o.Z   (2002-10-28 00:37:00) [8]

разговорный сленг...
вот одного не пойму: заменить адрес оконной ф-ии
что это подразумевается ??


Cobalt   (2002-10-27 23:40:00) [9]

Кстати, не объяснишь - че это за сленг такой - "гепнуть" ?
Явно не компьютерный...


Cobalt   (2002-10-27 23:37:00) [10]

>что-то всё очень сложно...
Дык, а ты что думал? Обойтись сотней строк кода? Библиотек/компонент для этого нет(каждая такая работа - ручная -> автор не спешит выкладывать код кому попало(кому НАДО - сами разберутся и получат ОГРОМНЫЙ опыт))
Концепцию я тебе дал, так что перед тобой - шикарное поле для деятельности.
Для начала - подружись с хуками. - без этого - никак(по крайней мере - в линейке Вин9Х, с NT не работал)


K.o.Z   (2002-10-27 21:49:00) [11]

то, что я с хуками не дружу это уже ясно...
нашел, как просто гепнуть иконку часов, НО как же на их место поставить свою ??


Cobalt   (2002-10-27 00:31:00) [12]

Оооо, это, можно сказать, бич (один из) этого форума - Хуки.
Почитайте статью здесь, на сайте, внимательно. Потренируйтесь с хуками вообще, а потом уж приступайте к Вашей задаче.


K.o.Z   (2002-10-26 23:24:00) [13]

2 Cobalt
что-то всё очень сложно...
частично понял, НО... каким образом закрепиться в в потоке окна и заменить адрес оконной ф-ии... вот это поистине черная дыра


Cobalt   (2002-10-26 19:33:00) [14]

Пример - TClockEx http://users.iafrica.com/d/da/dalen/tclockex.htm
8-)
Все остальное - ручками, ручками...


TankMan   (2002-10-26 15:27:00) [15]

А примера конечно не будет :)


Cobalt   (2002-10-26 02:35:00) [16]

> Song © (21.10.02 09:18)
Не издевайтесь над новичком
>K.o.Z © (25.10.02 22:05)
Даю намек: это окно класса TrayClockWClass, является дочернимдля окна класса Shell_TrayWnd. Более подробно - используйте WinSight32/Spy++
Ваша задача - внедриться в поток этого окна (через хук), закрепиться в нём(LoadLibrary), и заменить адрес оконной ф-ии(не забыв сохранить ее предыдущий адрес) - рисуйте что угодно. Если в настройках - "не отображать" - то окно не будут просить отрисовываться.


K.o.Z   (2002-10-25 22:05:00) [17]

Как убить процесс часов?Если можно кусок кода.


Song   (2002-10-21 09:18:00) [18]

Убить процесс часов. Поможет, но ненадолго. :(


Наверх

Титульная страница Поиск, карта сайта Написать письмо