SysTray и в нем Balloon, а там глюк под XP !!!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

SysTray и в нем Balloon, а там глюк под XP !!!

Сообщение Eduard » 23.10.2004 (Сб) 14:10

Доброе время суток!
И вот снова XP меня в очередной раз шокирует своей тупостью.
Качнул недавно с vbAccelerator исходник SysTray w/ BalloonTip, с поддержкой WinMe и Unicode'ом для NT. У меня самого WinMe юзается. Так вот на нем я пишу прогу и т.д. и т.п., и Баллонн работал зашибись как надо. Запустил на XP, и ентот баллончик совсем обарзел, - когда он появляется, то светиться он может там, хоть всю вечность, когда таймаут у него установлен только 15 сек. Вообщем как я там только с ума не сходил, все ровно он светиться черти знает сколько.

Вообщем помогите как нибудь под XP таймаут настроить для баллонна.
Думаю может кто заглянет в этот исходник, что поправить надо там (а тож на vbAccelerator'е все второпях делают).

В исходнике: сам этот класс модуль, которой творит "чудеса", и небольшой примерчик, который почему-то под Me работает "как доктор прописал", а под хваленую M$-ом XP х** пинает. ;-)
Вложения
BalloonSysTray.zip
SysTray with BalloonTip for WinMe, WinXP
(5.73 Кб) Скачиваний: 170
Последний раз редактировалось Eduard 26.10.2004 (Вт) 13:21, всего редактировалось 2 раз(а).
On Fatal Error Resume Next

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Re: SysTray и в нем Balloon, а там глюк под NT!

Сообщение Vovik » 24.10.2004 (Вс) 10:50

А кто тебе сказал, что в XP для балунов вообще есть ограничение? Это было на старых платформах, а в NT - пока сам не заглушишь, она не тухнит.... Я даже когда в инет подключаюсь, он выводит скорость подключения..... Специально следил, когда она заглохнет - нифига... Пока сам не закрыл - не успакоилась. :roll:

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

Сообщение GSerg » 24.10.2004 (Вс) 11:03

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

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 24.10.2004 (Вс) 12:04

Да не может быть, что в XP нету таймаута для баллона, в MSDN об этом вообще не чего не сказано:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/structures/notifyicondata.asp

Даже если так, то как его глушить тогда уж !? В исходнике нету такой функции HideBalloonTip() :roll:
On Fatal Error Resume Next

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

Сообщение GSerg » 24.10.2004 (Вс) 12:15

Так это ж окно.
ShowWindow 0 ему сделай...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 24.10.2004 (Вс) 13:04

GSerg писал(а):Так это ж окно.
ShowWindow 0 ему сделай...


А как мне его хендл пробить? чтобы грохнуть!
On Fatal Error Resume Next

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

Сообщение GSerg » 24.10.2004 (Вс) 14:04

Ну так ты ж его создал через createwindow? Вот и хэндл.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 24.10.2004 (Вс) 17:10

GSerg писал(а):Ну так ты ж его создал через createwindow? Вот и хэндл.

Неа, в этом исходнике он создаётся через функцию Shell_NotifyIconA(...), в том то и проблема моя, может быть её и не было если бы я знал handle баллона, были у меня такие мысли создать фун-ю HideBalloonTip, но не знаю Как убить баллон, созданный через Shell_NotifyIcon??
On Fatal Error Resume Next

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

Сообщение GSerg » 24.10.2004 (Вс) 17:14

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

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 24.10.2004 (Вс) 17:20

GSerg писал(а):А что, мембер uTimeout в структуре отсутствует? :roll:

Именна такой да, но есть uTimeoutAndVersion! Но в том то и вся соль, что под 9x/Me этот мембер работает, а под XP не идёт!!!
On Fatal Error Resume Next

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 25.10.2004 (Пн) 9:33

Млин! Да помогите же мне убить баллон как-нибудь, я уже не знаю что делать, должно же быть какое-то решение :oops:
On Fatal Error Resume Next

Aleksej
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 191
Зарегистрирован: 03.06.2003 (Вт) 9:58

Сообщение Aleksej » 25.10.2004 (Пн) 10:02

Выставь Timer1.Enable=True. И у меня всё начало работать.[/b]

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 25.10.2004 (Пн) 17:27

Aleksej писал(а):Выставь Timer1.Enable=True. И у меня всё начало работать.[/b]

Умно! А что я в таймер то засуно :(
On Fatal Error Resume Next

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 25.10.2004 (Пн) 18:18

Привет!
Не смотря на
uTimeout
The timeout value, in milliseconds, for a balloon-style ToolTip.

По моему это значение секунд.

Если в вызове
Код: Выделить всё
Private Sub Command1_Click()
   ...   
    cTrayIcon.ShowBalloonTip sMessage, sTitle, NIIF_INFO, (lTimeOut * 1000)
End Sub

Убрать умножение на 1000, то вроде работает
Код: Выделить всё
Private Sub Command1_Click()
   ...   
    cTrayIcon.ShowBalloonTip sMessage, sTitle, NIIF_INFO, (lTimeOut)
End Sub

Удачи!

Aleksej
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 191
Зарегистрирован: 03.06.2003 (Вт) 9:58

Сообщение Aleksej » 25.10.2004 (Пн) 18:19

В том проекте, что Ты приложил, на закладке Properties-Timer1 свойство Enable стоит в False, переставь его в True.

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 25.10.2004 (Пн) 18:36

Igor_123 писал(а):Убрать умножение на 1000, то вроде работает!

Мне кажется и это всё фихня, но я не пробовал, пойду попробую!
On Fatal Error Resume Next

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 26.10.2004 (Вт) 13:06

Igor_123 писал(а):Убрать умножение на 1000, то вроде работает!

Нее, проверил всё ровно что-то не идёт :( и это мне уже надоело, ну всё перепробовал, блин, как эти M$ организовали функцию Shell_NotifyIcon в ХР вообще не понимаю, только все запороли (по сравнению с предыдущими платформами)!

Дайте тогда другой совет: Как закрыть баллон созданный Shell_NotifyIcon'ом, только не таймаутом, понимаете что не получается?? Может сообщение послать какое-нибуть главному моему окну, которое как-то скажется на баллоне? Не знаю просто, ну дайте что нибуть, пожалуйста, проект стоит из-за этого баллона дибильного, который очень-очень нужен.
On Fatal Error Resume Next

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 26.10.2004 (Вт) 18:07

Неа, в этом исходнике он создаётся через функцию Shell_NotifyIconA(...), в том то и проблема моя, может быть её и не было если бы я знал handle баллона, были у меня такие мысли создать фун-ю HideBalloonTip, но не знаю Как убить баллон, созданный через Shell_NotifyIcon??

Код: Выделить всё
Private Type NOTIFYICONDATAA
   cbSize As Long             ' 4
   hwnd As Long               ' 8 - Это не HWND Я идиот! Убейте меня, кто-нибудь!???
   uID As Long                ' 12
   uFlags As Long             ' 16
   uCallbackMessage As Long   ' 20
   hIcon As Long              ' 24
   szTip As String * 128      ' 152
   dwState As Long            ' 156
   dwStateMask As Long        ' 160
   szInfo As String * 256     ' 416
   uTimeOutOrVersion As Long  ' 420
   szInfoTitle As String * 64 ' 484
   dwInfoFlags As Long        ' 488
   guidItem As Long           ' 492
End Type

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

Сообщение GSerg » 26.10.2004 (Вт) 18:28

Это hwnd родительского окна.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 26.10.2004 (Вт) 18:54

А если под этим родителем перебрать всех детей и искать по классу окна? EnumWindows() никто не отменял. Понимаю, что решение, как всегда, через одно место, но хоть какое-то...

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

Сообщение GSerg » 26.10.2004 (Вт) 18:58

Отношение здесь обратное :)
Не тултипы к окнам привязаны, а окна к тултипам, как ни странно :)

Хотя enumwindows и правда может сработать - но как узнать, где чей?
Хотя, помнится, где-то я видел в MSDN, что балун может быть одновременно только один, хм...
А раз один, то нуно findwindow по классу TOOLTIPS_CLASS :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 28.10.2004 (Чт) 8:32

Ennor писал(а):А если под этим родителем перебрать всех детей и искать по классу окна? EnumWindows() никто не отменял. Понимаю, что решение, как всегда, через одно место, но хоть какое-то...

GSerg писал(а):Хотя enumwindows и правда может сработать - но как узнать, где чей?
Хотя, помнится, где-то я видел в MSDN, что балун может быть одновременно только один, хм...
А раз один, то нуно findwindow по классу TOOLTIPS_CLASS


Вот задачки-то :roll: , но делать не чего, пойду пробовать, если поможет то большое пасибо за совет, не догадался бы :oops:
On Fatal Error Resume Next


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

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

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 8

    TopList