|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.08.2012, 07:48 | #1 |
Форумчанин
Регистрация: 27.07.2009
Сообщений: 547
|
Перечисление доч. окон, проблемы с HWND
Не выполняет EnumChildWindows(wnd,@EnumClasses,0 ) если подавать существующий hwnd главного окна
Код:
Код:
Код:
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
Последний раз редактировалось HellMercenariess; 27.08.2012 в 07:52. |
27.08.2012, 08:51 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Не прокатило совсем или не нашло имена классов ComboBox и ComboLBox? А почему не TComboBox и TComboLBox?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
27.08.2012, 10:03 | #3 | |
Форумчанин
Регистрация: 27.07.2009
Сообщений: 547
|
Цитата:
Совсем ничего не находит если давать существующий Hwnd окна. там в конце функции вывод строчки, по этому видно что эта функция не исполняется совсем. Код:
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
Последний раз редактировалось HellMercenariess; 27.08.2012 в 10:06. |
|
27.08.2012, 10:49 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
А что возвращает EnumChildWindows и что говорит GetLastError?
|
27.08.2012, 10:53 | #5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
27.08.2012, 11:46 | #6 |
Форумчанин
Регистрация: 27.07.2009
Сообщений: 547
|
Надо было сразу вам больше пояснить в чем дело, дело в корректном нахождении hwnd
wnd:=FindWindow(,); вся соль изначально была в том что невозможно точно прописать название искомого окна из-за того что оно или очень длинное или некорректное. В самом первом случае с которым мне довелось столкнутся в названии окна был символ ' и отослать такой код Код:
Все найденные дочерние контролы я помещал в список и вел учет сколько чего добавляется для какого окна, так было замечено что если искать окно которого нет(тогда я не делал проверки if (Wnd>0) then) то в список с помощью EnumClasses добавляется от 200 до 350 элементов, если искомое окно загружено то кол-во. = 35-70 Сейчас надо было искать окно с очень длинным названием, там еще тире какое-то длинное было, прописать я точно это не смог, но уже умел искать все полнофункциональные окна вот так Код:
Теперь хорошо видно что я отсылаю здесь wnd:=FindWindow(,искомая_строка); верно и получаю hwnd из шести цифр но почему-то не выполняется вот здесь Код:
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
Последний раз редактировалось HellMercenariess; 27.08.2012 в 11:49. |
27.08.2012, 11:52 | #7 |
Форумчанин
Регистрация: 11.04.2012
Сообщений: 212
|
Главное окно приложения (Application.Handle) не имеет ничего общего (кроме уровня - top-level) с окном главной формы приложения (ApplicationMainForm.Handle), на которой собственно и находятся искомые окна дочерних контролов.
У окна Application.Handle действительно нет дочерних окон, если в ран-тайм явно не приложить к этому ручки. |
03.09.2012, 21:05 | #8 |
Форумчанин
Регистрация: 27.07.2009
Сообщений: 547
|
А как находить hwnd для таких окон как во вложении? Опера еще этим страдает - добавлять название файла или страницы в заголовок.
Есть еще какие-то способы поиска кроме этих? Код:
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
|
03.09.2012, 21:31 | #9 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
у окон между прочим еще есть класс.
+ можно фильтровать по процессу. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
04.09.2012, 18:31 | #10 |
Форумчанин
Регистрация: 27.07.2009
Сообщений: 547
|
Класс окна может называться так?
Plat::Window{DB3DC0D7-BBA3-4} Сейчас пробовал выполнить поиск двумя способами по названию окна которое видно через диспетчер задач и по этому что написал выше, посмотроел через WinSight и они совпали. Соответственно Код:
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
Последний раз редактировалось HellMercenariess; 04.09.2012 в 18:35. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перечисление внутри структуры | Form_13 | Помощь студентам | 6 | 02.08.2011 13:38 |
Не работает перечисление (enum). | Casper-SC | Общие вопросы .NET | 3 | 01.02.2010 18:16 |
Перечисление юзеров | doniyor | Работа с сетью в Delphi | 5 | 24.01.2010 23:24 |
Перечисление свойств элемента управления | YuraL | Microsoft Office Excel | 2 | 08.03.2009 13:02 |
Перечисление компонентов | Zeraim | Свободное общение | 5 | 30.11.2008 20:20 |