Window hook

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Window hook

Сообщение Tamplier » 16.03.2006 (Чт) 17:28

Вот тут http://bbs.vbstreets.ru/viewtopic.php?t=23961
Kovu сказал
Хук позволяет поменять иконку в месаджбоксе....не наводит на мысли
Там я спросил использовать хук, но мне никто неответил. Посему завел новый топик. Поиск результатов не дал.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.03.2006 (Чт) 18:14

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

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 17.03.2006 (Пт) 14:53

Tamplier
Когда писал честно говорю не проверил :oops:
Ну вообще возможно конечно и через хук, т.е. когда вызывается процедура хука например ресайзишь Static окно иконки, немного меняешь ему стиль и выставляешь картинку фона(маожно вообще насоздавать своих окон в окне месаджбокса и раскрасить как вздумается). Но это очень геморрно. Так что слушай темыча =)
Если всё делать своими ручками, они скоро отвалятся !

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 17.03.2006 (Пт) 16:03

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

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.03.2006 (Пт) 18:30

С чего ты взял, что хук нагрузил бы процессор меньше, чем таймер? :-?

Инфа про хуки есть на этом форуме. Есть даже мой пример хука на чистом VB. Но 1) всё это на порядки сложнее, чем с таймером, и 2) в твоей задаче это нафиг не нужно. Kovu ляпнул сгоряча, а тебе теперь без хука жизнь не мила :-|
Изображение

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 19.03.2006 (Вс) 15:43

Гы... А таймер тоже стопается во время засвечивания мсжБокса...
Дайте хотя бы название примера, что ли...

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 20.03.2006 (Пн) 19:16

Так что? Даст мне кто-нить название? А то мне ничего в голову в качестве названия не приходит. А поиск по-прежнему результатов не дал...

Или мне пытаться приаттачить куда-нить апишный таймер и попытаться на него CallBack повесить? А тогда какое сообщения надо на вызов CallBack?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 20.03.2006 (Пн) 19:34

Tamplier писал(а):Или мне пытаться приаттачить куда-нить апишный таймер и попытаться на него CallBack повесить? А тогда какое сообщения надо на вызов CallBack?

Да.
Причём если ты называешь словом "CallBack" сабклассинг, то он не нужен. Там обычный каллбак, без сообщений.
Изображение

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 22.03.2006 (Ср) 16:35

Там обычный каллбак, без сообщений

CreateTimerQueueTimer вешать?

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 22.03.2006 (Ср) 16:41

Да. Через CreateTimer MessageBox не будет стопорить выполнение проги...
А я все практикую лечение травами...

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 22.03.2006 (Ср) 17:23

спасибо, все работает

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.03.2006 (Ср) 18:29

Tamplier писал(а):
Там обычный каллбак, без сообщений

CreateTimerQueueTimer вешать?

Она вызывает каллбак с системной нити... Не уверен, что в VB это будет работать хорошо.


А каллбак обычного CreateTimer превосходно вызывается при висящем месседжбоксе -- проверено.
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 22.03.2006 (Ср) 18:43

Про проблемы таймеров в VB почитать можно тут.
А я все практикую лечение травами...

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 22.03.2006 (Ср) 19:11

Она вызывает каллбак с системной нити... Не уверен, что в VB это будет работать хорошо.

А каллбак обычного CreateTimer превосходно вызывается при висящем месседжбоксе -- проверено.

ответ -
спасибо, все работает

в том числе и CallBack

Twister, спасибо. Эту тему я уже читал. Все равно (почему я и спрашивал CallBack на определенную команду) процедура будет выполняться один раз. Потом этот таймер будет уничтожен. Но, спасибо, что напомнил.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.03.2006 (Ср) 20:17

Tamplier писал(а):
Она вызывает каллбак с системной нити... Не уверен, что в VB это будет работать хорошо.

А каллбак обычного CreateTimer превосходно вызывается при висящем месседжбоксе -- проверено.

ответ -
спасибо, все работает

в том числе и CallBack

Неужели ты хочешь сказать, что юзаешь CreateTimerQueueTimer, компилируешь в native-code, и оно не падает? :shock:
Изображение

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 23.03.2006 (Чт) 8:16

Хе... Блин, падает и еще как... Откомпилировать тогда просто забыл... Блин.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 23.03.2006 (Чт) 12:01

Tamplier, чесслово, если бы ты юзал обычный CreateTimer, а не всю эту экзотику, то у тебя всё работало бы уже неделю назад.
Изображение

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 23.03.2006 (Чт) 14:07

А че за CreateTimer? Его почему-то нет нигде... Или ты имеешь ввиду SetTimer?

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 23.03.2006 (Чт) 14:29

Tamplier
Да именно так. С ним не падает и откомпилированный вариант
Если всё делать своими ручками, они скоро отвалятся !

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 23.03.2006 (Чт) 14:40

Declare Function SetTimer Lib "user32" Alias "SetTimer" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long


Или все-таки CreateTimer?
ITimerService::CreateTimer Method
Internet Development Index

Creates a timer object.

Syntax

HRESULT CreateTimer(
ITimer *pReferenceTimer,
ITimer **ppNewTimer
);

Parameters
pReferenceTimer
[in] Address of the reference timer for the new timer.
ppNewTimer
[out] Address of the pointer to the new timer object.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.03.2006 (Чт) 14:56

SetTimer
Lasciate ogni speranza, voi ch'entrate.

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 23.03.2006 (Чт) 15:04

Спасибо :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 23.03.2006 (Чт) 16:02

"Это хорошо, что вы следите, чтобы я не описывался" (c) ;-)
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 60

    TopList