Уже раньше подымал этот вопрос. Вот под общил все собранные мной знания в одном вопросе.
WinApi
Первое окно.
Кликаем на нем кнопку.
Так что вылетает второе окно.
Причем так, что к первому нету никакого доступа.
Ни мышкой ни клавиатурой.
Как для первого окна определить, что для него открыто второе окно и соответственно нету никакого доступа к первому?
пробовал IsWindowEnabled(Handle) .
Эта функция в моем случае всегда возвращает true независимо от того открыто ли второе окно.
Также пробовал SendMessageTimeout . Функция показывает висит окно или нет.
В моем случае окно при наличии второго окна первое окно откликается (не висит).
И поэтому эта функция не подходит
(Если искуственно сделать так чтобы перовое окно повисло то SendMessageTimeout показывает это)
Окна не мои. Поэтому все чего у меня есть это spy++ и хендлы к обоим окнам.
Хуки в программе использовать нельзя т.е. хук с отловом всяких EVENT_SYSTEM_DIALOGSTART не подходит.
Spy++ . Показывает. что Перовое окно это радительское окно втрому.
Второе окно не чилд первого.
Те стили которые показывает spy++ для первого окна не меняются. В зависимости от того, открыто ли второе окно.
Здравствуйте, korggrodno, Вы писали:
K>После того как вы залогинились. Вы видите зеленое окно клиента. K>Жмем как на скриншоте. K>http://xmages.net/storage/10/1/0/c/3/upload/749f22e1.jpg
K>И у вас в наличии два окна для исследования. О которых и был вопрос.
А там точно 2 окна? Может просто 2-е окно рисуется?
Хм, скачивать этакий балласт неохота, и давай поступим так:
наоборот — ты скачай мою утилитку http://files.rsdn.ru/42164/wintreesnap.zip,
потом запусти свой покер и открой те окна,
после чего запусти wts_e_g.exe из архива утилитки — и получишь 2 текстовых файла (2 снимка иерархии окон на твоем компе).
Заархивируй их и выложи здесь. Возможно, все сразу и прояснится.
wts_0189_o043_0005679126_g.txt
wts_0189_o044_0005676051_e.txt
эти два файла для случая когда открыты оба окна . Покер клиент. И окно со свойствами модельного окна висящее над ним.
wts_0189_o044_0005608394_e_bez2.txt
wts_0190_o044_0005611348_g_bez2.txt
эти два файла для случая когда открыт только покер клиент. И окно со свойствами модельного окна закрыто.
Чтобы проще было найти в текстовиках нужную строчку. Вот заголовок покер клиента
"Parimatch: Nickname: Luchezarovna | Players: 7612 | Tables: 1180 | Tournaments: 354"
Что то я сам сравнивал строки инфы полученные. И ничего примечательного не увидел
окно со свойствами модельного окна висящее над ним — которое? Над ним более 30 окон.
Что ли — с HWND=00010298 (оно, кстати, не закрывается, а просто делается невидимым)?
Если оно — то оно owned, и его owner =00010194 = покер кл.
Но: WS_-стиль этого owner-а =16ca0000 = WS_VISIBLE | WS_SYSMENU | WS_MINIMIZEBOX | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION,
т.е. нема WS_DISABLED, и поэтому похоже, что хоть и owned, но НЕ модальное.
Кстати, в этом казино нет ни одного задизабленного (через WS_DISABLED) окна.
Хотя, конечно, закрыть окну input можно и без WS_DISABLED, вариантов полно.
Посему — возможно, стоит засабклассить покер кл.
---
А вообще обилие окон в этом казино впечатляет
K>окно со свойствами модельного окна висящее над ним — которое? Над ним более 30 окон. K>Что ли — с HWND=00010298 (оно, кстати, не закрывается, а просто делается невидимым)?
00010298 00010014 0003003e 00010096 00020104 00010298 00000000 00010100 72 0 w u HD 0 0 0 0 0 0 760 1696 1536 casino.exe 00400000 7e360000 7e3bc930 00000000 00000000 00000000 8c000000 00004000 0 4 c026 IME "Default IME"
Вот это окно короче было. Над клиентом. Со свойствами модального окна.
Вы правильно определили . с HWND=00010298
K>Посему — возможно, стоит засабклассить покер кл.
Может быть вы бы слегка пояснили бы, что это значит.
Или скажете какой нить термин. Чтобы удобнее в гугле было искать.
//***************************************************************************************
//***************************************************************************************
//***************************************************************************************
Здравствуйте, CEMb, Вы писали: CEM>Здравствуйте, kero, Вы писали: K>>[...] CEM>Да ужеж разобрались тут
Чета я не совсем разобрался.
Видно по логу, что приходят окну разные сообщения в различных случаях.
Можно конечно поставить. Хук. Перехватывать все сообщения окна.
Генерировать клик по окну. И смотреть через хук, что пришло окну.
Но не совсем хотелось бы использовать хуки
(мне один человек объяснял, что бы я хуки не использовал)
Мол покер клиент хуки легко замечает. И расценивает как манипуляции с ним. Незаконные.
И в ближайшем времени происходит бан.
думал,раз сообщения приходят окну разные.
Пробовал и эксперементировал. Посылать окну разные сообщения через
Здравствуйте, korggrodno, Вы писали:
K>Чета я не совсем разобрался. K>Видно по логу, что приходят окну разные сообщения в различных случаях. K>... K>Но не совсем хотелось бы использовать хуки K>... K>Но пока ничего интересного не нашол
Чтобы просто задетектить: эмуляции драгдропа первого окна (на пиксель, через mouse_event) + GetWindowRect до и после.