Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-51825
HP
2002-12-05 11:14
2002.12.16
FastReprt


6-51864
Chlavik
2002-10-22 01:21
2002.12.16
Сетевые диски.....


6-51851
Tihas
2002-10-20 00:23
2002.12.16
TNMHTTP


14-51915
Anatoly Podgoretsky
2002-11-24 08:56
2002.12.16
Именинники 24 ноября


1-51724
Valentain
2002-12-05 18:26
2002.12.16
Динамический файл





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский