Как определить моргает окошко или нет?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
deepslam
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 286
Зарегистрирован: 19.08.2002 (Пн) 2:25
Откуда: Russia

Как определить моргает окошко или нет?

Сообщение deepslam » 15.12.2004 (Ср) 17:42

Доброго времени суток!
Подскажите пожалуйста как определить моргает окошко или нет (FlashWindow - это заставить окошко моргать)...
Заранее спасибо. :)

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

Сообщение GSerg » 15.12.2004 (Ср) 17:51

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

deepslam
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 286
Зарегистрирован: 19.08.2002 (Пн) 2:25
Откуда: Russia

Сообщение deepslam » 15.12.2004 (Ср) 21:02

GSerg писал(а):Вопрос не в том, как. Вопрос в том, зачем :)

смешно...

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 15.12.2004 (Ср) 21:53

Над тобой никто и не смеется.. GSerg наверное картинку с этой спутал :lol:
Ты уже задавал вопрос и что тебе ответили? Нельзя.

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

deepslam
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 286
Зарегистрирован: 19.08.2002 (Пн) 2:25
Откуда: Russia

Сообщение deepslam » 15.12.2004 (Ср) 22:10

xolod писал(а):Над тобой никто и не смеется.. GSerg наверное картинку с этой спутал :lol:
Ты уже задавал вопрос и что тебе ответили? Нельзя.

нет мне там не ответили, там мне указали на функцию FlashWindow.
Просто я вопрос неккоректно сформулировал тогда :(
Да и в чужом топике как то плохо отслеживать ответы :(

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 15.12.2004 (Ср) 22:18

А вот с этим ничего сделать нельзя (просто VB под рукой нет)? :roll:
API-Guide :: FlashWindow писал(а):The return value specifies the window’s state before the call to the FlashWindow function. If the window was active before the call, the return value is nonzero.

If the window was not active before the call, the return value is zero.

deepslam
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 286
Зарегистрирован: 19.08.2002 (Пн) 2:25
Откуда: Russia

Сообщение deepslam » 15.12.2004 (Ср) 22:24

A.A.Z. писал(а):А вот с этим ничего сделать нельзя (просто VB под рукой нет)? :roll:
API-Guide :: FlashWindow писал(а):The return value specifies the window’s state before the call to the FlashWindow function. If the window was active before the call, the return value is nonzero.

If the window was not active before the call, the return value is zero.

Я пробовал и эта функция только заставляла окошко моргать. Вот. (((

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 15.12.2004 (Ср) 23:36

Я про то, что она возвращает: там написано, что в результате получается состояние окна перед вызовом функции :roll:

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 15.12.2004 (Ср) 23:39

Функция возвращает, только было ли окно активно, но не моргало ли оно в этот момент, имхо...

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 15.12.2004 (Ср) 23:41

Да, похоже на правду... Но неужели действительно никак нельзя реализовать? :roll:

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

Сообщение GSerg » 16.12.2004 (Чт) 5:08

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

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

Сообщение tyomitch » 16.12.2004 (Чт) 5:52

А если окно свёрнуто - откуда тогда тырить пикселы? ;-)
Изображение

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 16.12.2004 (Чт) 6:02

С панели задач.. И сравнивать менялся ли цвет за определенное время, анализировать и думать - мигает окошко или нет. :)
А вообще, это все похоже на код расширения часов и т.п. :?

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

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

Сообщение tyomitch » 16.12.2004 (Чт) 6:26

deepslam-то как раз хочет свою панель написать, и он не сможет тырить со стандартной.
Ну ломает меня опять в исходниках Винды копаться... Неужели я один на всём форуме, у которого они есть :?:
Изображение

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 16.12.2004 (Чт) 6:45

У тебя есть Microsoft Windows XP Prof :lol: ? Темыч, ты шпион, скажи честно? Последнее, что я смог качнуть с astalavist'ы - 98'ые окошки :arrow:

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

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

Сообщение tyomitch » 16.12.2004 (Чт) 6:54

У меня есть только Win2000 SP2, которые весной с.г. разошлись по всему Интернету. А что, Win98 - реальная что ли? Тоже интересно...
Изображение

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 16.12.2004 (Чт) 6:59

Ха, меняться будем? :) .. Тока в оффлайне конечно, а то там под 300 мегов сорсов.

А вообще, я даж компилить пытался, правда надоело мне это дела.. Во-первых ошибок сначала туева хуча полезла, но вроде как подправил ссылки битые на всякие include <...>
Во-вторых - терпение лопнула на 7 часе компилирования :D

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

deepslam
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 286
Зарегистрирован: 19.08.2002 (Пн) 2:25
Откуда: Russia

Сообщение deepslam » 16.12.2004 (Чт) 20:01

Попробую по другому сформулировать вопрос:
Допустим отследить появление нового окошка и заставить его мигать я могу, но вот как быть например с сообщениями аськи? Там же ведь когда сообщения приходят окна моргать начинают...
Вот в общем нужно отследить изменилось окно или нет или была ли ему послана команда а потом уже заставить его моргать функцией FlashWindow

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

Сообщение tyomitch » 16.12.2004 (Чт) 20:11

А, вот. deepslam, про шеллхуки знаешь?
Так вот, при мигании окна на зашеллхученное окно будет приходить HSHELL_FLASH.
Если не лень, можешь сабклассить все окна и ловить WM_NCACTIVATE, который также шлётся миганутому окну.
Изображение

deepslam
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 286
Зарегистрирован: 19.08.2002 (Пн) 2:25
Откуда: Russia

Сообщение deepslam » 16.12.2004 (Чт) 20:26

tyomitch писал(а):А, вот. deepslam, про шеллхуки знаешь?
Так вот, при мигании окна на зашеллхученное окно будет приходить HSHELL_FLASH.
Если не лень, можешь сабклассить все окна и ловить WM_NCACTIVATE, который также шлётся миганутому окну.


:shock: :shock: :shock:
а примерчика нету случай хотя бы какого нить хука

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

Сообщение tyomitch » 16.12.2004 (Чт) 20:33

Пример шеллхука от Оловянникова тут: http://vbrussian.com/Controls.asp?ID=58
Изображение

deepslam
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 286
Зарегистрирован: 19.08.2002 (Пн) 2:25
Откуда: Russia

Сообщение deepslam » 16.12.2004 (Чт) 21:29

tyomitch писал(а):Пример шеллхука от Оловянникова тут: http://vbrussian.com/Controls.asp?ID=58

спасибо сейчас разбираться буду )))

deepslam
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 286
Зарегистрирован: 19.08.2002 (Пн) 2:25
Откуда: Russia

Сообщение deepslam » 17.12.2004 (Пт) 15:41

tyomitch писал(а):А, вот. deepslam, про шеллхуки знаешь?
Так вот, при мигании окна на зашеллхученное окно будет приходить HSHELL_FLASH.
Если не лень, можешь сабклассить все окна и ловить WM_NCACTIVATE, который также шлётся миганутому окну.

Скачал пример, запустил и ничего не работает, по идее пример должен что то писать в логах когда я сворачиваю или разворачиваю окна да? :?:
Я вообще с шеллхуками не работал никогда - как я понял это прога, которая отлавливает системные сообщения да?

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

Сообщение tyomitch » 17.12.2004 (Пт) 17:57

Да, должен писать. Если у тебя WinXP, то может и не работать - я там не проверял. Но вообще, должен :-)
Если будет не лень, проверю тот пример в WinXP и скажу, что к чему.
Изображение

deepslam
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 286
Зарегистрирован: 19.08.2002 (Пн) 2:25
Откуда: Russia

Сообщение deepslam » 17.12.2004 (Пт) 18:03

tyomitch писал(а):Да, должен писать. Если у тебя WinXP, то может и не работать - я там не проверял. Но вообще, должен :-)
Если будет не лень, проверю тот пример в WinXP и скажу, что к чему.

Если не лень проверь плиз у меня как раз XP стоит...

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 17.12.2004 (Пт) 18:50

Напиши в Form_Load вместо
Код: Выделить всё
Call RegisterShellHook(hwnd, RSH_REGISTER)

вот это
Код: Выделить всё
Call RegisterShellHook(hwnd, RSH_REGISTER_TASKMAN)


И все будет ок :wink:

ЗЫ: Молодец все-таки Оловянников, гугль прям..

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

deepslam
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 286
Зарегистрирован: 19.08.2002 (Пн) 2:25
Откуда: Russia

Сообщение deepslam » 17.12.2004 (Пт) 20:56

xolod писал(а):Напиши в Form_Load вместо
Код: Выделить всё
Call RegisterShellHook(hwnd, RSH_REGISTER)

вот это
Код: Выделить всё
Call RegisterShellHook(hwnd, RSH_REGISTER_TASKMAN)


И все будет ок :wink:

ЗЫ: Молодец все-таки Оловянников, гугль прям..


спасибо )))

deepslam
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 286
Зарегистрирован: 19.08.2002 (Пн) 2:25
Откуда: Russia

Сообщение deepslam » 17.12.2004 (Пт) 21:21

Тока я вот не могу найти значение HSHELL_FLASH, даже в MSDN нету вроде< упоминание о ней есть, а вот самого значения нету...

API Viewer также о ней ничего не слышал...

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 17.12.2004 (Пт) 22:02

Module1.bas писал(а):' Bas module for implementing system - wide shell hook.
' Using undocumented Shell32 function RegisterShellHook.
' Thanks to James Holderness for his help on using this function.
' You can find many othar undoc shell32 functions at
' http://www.geocities.com/SiliconValley/ ... tents.html

Читал? :) Undocumented узрел..? Так ни MSDN, ни API-Viewer тебе не помогут :wink:.. Попробуй по ссылке сходить, может поможет..

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

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

Сообщение tyomitch » 17.12.2004 (Пт) 22:08

grep рулит...
Код: Выделить всё
#define HSHELL_WINDOWCREATED        1
#define HSHELL_WINDOWDESTROYED      2
#define HSHELL_ACTIVATESHELLWINDOW  3
#define HSHELL_WINDOWACTIVATED      4
#define HSHELL_GETMINRECT           5
#define HSHELL_REDRAW               6
#define HSHELL_TASKMAN              7
#define HSHELL_LANGUAGE             8
#define HSHELL_SYSMENU              9
#define HSHELL_ENDTASK              10
#define HSHELL_ACCESSIBILITYSTATE   11
#define HSHELL_APPCOMMAND           12
#define HSHELL_WINDOWREPLACED       13
#define HSHELL_WINDOWREPLACING      14
#define HSHELL_HIGHBIT            0x8000
#define HSHELL_FLASH              (HSHELL_REDRAW|HSHELL_HIGHBIT)
#define HSHELL_RUDEAPPACTIVATED   (HSHELL_WINDOWACTIVATED|HSHELL_HIGHBIT)
Изображение

След.

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

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

Сейчас этот форум просматривают: Google-бот и гости: 6

    TopList  
cron