Вверх ↑
Этот топик читают: Гость
Ответов: 14
Рейтинг: 0
#1: 2012-01-08 11:27:40 ЛС | профиль | цитата
может кто нибудь доработать и вставить функцию EnumChildWindows?
карма: 1

0
Ответов: 8931
Рейтинг: 823
#2: 2012-01-08 12:23:54 ЛС | профиль | цитата
Na4inaushiJ,
FindWindow писал(а):
doFindChild=Поиск дочернего элемента управления для окна с идентификатором ParentHandle

карма: 19

0
Ответов: 14
Рейтинг: 0
#3: 2012-01-08 12:48:04 ЛС | профиль | цитата
EnumChildWindows=перечисление дочерних элементов и окон с идентификатором ParentHandle по моему не одно и тоже
если будет реализована возможность узнать какие есть элементы в окне то к ним можно обращаться с помощью SendMessage.
К примеру получить текст из другого окна можно указав дочерний элемент(который изначально неизвестен)?
------------ Дoбавленo в 12.45:
Add(MainForm,2953706,413,161)
{
Width=960
Height=613
link(onCreate,4408081:doEnum,[])
}
Add(Button,3406640,364,182)
{
Left=895
Top=565
Caption="Выход"
link(onClick,2953706:doClose,[])
}
Add(WinEnum,4408081,476,175)
{
Point(ClassName)
link(onFindWindow,16218844:doAdd,[])
link(Caption,16218844:String,[(482,163)(520,163)(520,232)(559,232)])
}
Add(ComboBox,16218844,546,175)
{
Left=5
Top=5
Width=185
Height=21
Text=""
link(onClick,3180600:doEvent1,[])
}
Add(Hub,3180600,595,182)
{
link(onEvent1,4408081:doFind,[(621,188)(621,150)(461,150)(461,188)])
link(onEvent2,12212352:doText,[(619,195)(619,188)])
}
Add(Edit,12212352,630,182)
{
Left=195
Top=5
Width=170
Text=""
link(onEnter,13085002:doFindChild,[])
link(Str,4408081:Handle,[(636,170)(559,170)(559,219)(482,219)])
}
Add(FindWindow,13085002,700,182)
{
link(onFind,4575126:doText,[])
link(ParentHandle,12212352:Text,[(706,170)(671,170)(671,226)(636,226)])
}
Add(Label,4575126,770,182)
{
Left=375
Top=5
Width=70
Height=20
}
запускаю блокнот запускаю эту программу выбираю в списке Блокнот нажимаю интер в поле ввода и получаю результат=0 значит дочернее окно не найдено а я хочу получить список дочерних элементов этого окна ведь в примере как то нашли элемент дочерний с именем класса "Edit"?
------------ Дoбавленo в 12.48:
Add(MainForm,2953706,77,147)
{
Caption="Пример SendMessage"
}
Add(FindWindow,9431484,210,105)
{
ClassName="Notepad"
SkipParam=1
link(onFind,3035978:doFindChild,[])
}
Add(FindWindow,3035978,259,98)
{
ClassName="Edit"
SkipParam=1
}
Add(Memo,982747,378,175)
{
Left=45
Top=25
Width=305
Height=205
ScrollBars=3
}
Add(SendMessage,15421399,259,196)
{
Message=13
link(onSend,16305821:doGet,[(303,202)(303,209)])
link(Handle,3035978:Handle,[])
link(LParam,1164314:Memory,[(279,187)(335,187)])
}
Add(MemoryStream,1164314,315,140)
{
Point(Memory)
Point(doSize)
}
Add(DataToFile,16305821,315,196)
{
Type=6
link(onGet,982747:doText,[])
link(Stream,1164314:Stream,[])
}
Add(Hub,8233292,224,147)
{
OutCount=3
link(onEvent1,1164314:doClear,[])
link(onEvent2,1164314:doSize,[])
link(onEvent3,15421399:doSendMessage,[(248,167)(248,202)])
}
Add(Timer,8404764,77,105)
{
Interval=300
link(onTimer,13132817:doEvent1,[])
}
Add(Hub,13132817,126,105)
{
link(onEvent1,9431484:doFind,[])
link(onEvent2,5834539:doData,[(154,118)(154,153)])
}
Add(DoData,5834539,168,147)
{
Data=Integer(100000)
link(onEventData,8233292:doEvent1,[])
}
карма: 1

0
Ответов: 1376
Рейтинг: 197
#4: 2012-01-08 13:29:08 ЛС | профиль | цитата
Na4inaushiJ писал(а):
нажимаю интер в поле ввода и получаю результат=0

Всё нормально работает, результат<>0
code_26482.txt
карма: 1

0
файлы: 1code_26482.txt [1KB] [612]
Ответов: 14
Рейтинг: 0
#5: 2012-01-08 13:38:07 ЛС | профиль | цитата
работает с блокнотом потому что класс установлен значение "Edit" не у всех приложений есть этот дочерний элемент, привожу вставку с одного из форумов
Перебрать все внутренние компоненты окна, зная его HANDLE
Доброго времени суток!

Стоит задачка: перебрать внутренние компоннты окна по HANDLE этого окна.

Как это сделать? Как Spy++ получает список компонент и класов ннутри окна и строит дерево?

EnumChildWindows перебирает окна на экране, а не тот HWND что я ему передаю. Сейчас кувыркался с GetNextWindow, таже фигня.

КАК? Как Spy++ это делает???! Мне не дерево надо, мне нужен список компонент окна по указанному handle.

Код:


#include <windows.h>

BOOL CALLBACK LookUp(HWND wnd, LPARAM lParam)
{
wchar_t buffTemp[MAX_PATH];
GetClassName(wnd,buffTemp,MAX_PATH);
MessageBox(0,buffTemp,0,0);
return TRUE;
}

void main()
{
HWND wndHandle = FindWindow(L"Notepad",0);
EnumChildWindows(wndHandle, &LookUp, 0);
}


вот и ходелось бы узнать как такое в хайасме реализовать
карма: 1

0
Ответов: 1376
Рейтинг: 197
#6: 2012-01-08 14:11:45 ЛС | профиль | цитата
может чего здесь найдётся...
allwindow
карма: 1

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#7: 2012-01-08 14:17:45 ЛС | профиль | цитата
Na4inaushiJ писал(а):
вот и ходелось бы узнать как такое в хайасме реализовать

Берешь lnLineCode и реализуешь
карма: 22

0
Ответов: 1376
Рейтинг: 197
#8: 2012-01-08 14:24:49 ЛС | профиль | цитата
[flood]Неужели же так мало заморочек с контролами в своих программах, что люди стремятся управлять контролами в чужих программах?[/flood]
карма: 1

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#9: 2012-01-08 14:31:07 ЛС | профиль | цитата
foksov,
[flood]Захват и управление чужими окнами при таком уровне знаний говорит о том, что топикистартер -- либо младохакер, либо хочет банально вы@бнуться перед сверстниками. Нормальный программер никогда не будет светиться с такими вопросами, он постарается найти на них ответ сам.[/flood]
карма: 22

0
Ответов: 14
Рейтинг: 0
#10: 2012-01-08 15:02:54 ЛС | профиль | цитата
Берешь lnLineCode и реализуешь

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

0
Ответов: 1376
Рейтинг: 197
#11: 2012-01-08 15:22:49 ЛС | профиль | цитата
Na4inaushiJ писал(а):
EnumChildWindows=перечисление дочерних элементов и окон с идентификатором ParentHandle
не ошибка компонента WinEnum, в связи с этим автор компонента имеет полное право на заявление
nesco писал(а):
В настоящем пакете больше не будет ничего добавляться, объединяться и переделываться, только будут корректироваться обнаруженные баги. Пакет приобретает статус замороженного, так же, как сейчас сам Hiasm 4
если пожелает
карма: 1

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#12: 2012-01-08 15:53:31 ЛС | профиль | цитата
foksov писал(а):
если пожелает

Во-первых: я не автор этого компонента;
Во-вторых: предложенный код использует асинхронный вызов функции обратного вызова, которая никаким образом не синхронизирована с основным обработчиком событий. Организация синхронизации этой функции будет напоминать последнюю реализацию Img_Loader-a. К тому же, асинхронный вызов использует режим многопоточности, что чревато в некоторых случаях
карма: 22

0
Ответов: 8931
Рейтинг: 823
#13: 2012-01-08 17:17:49 ЛС | профиль | цитата
nesco, ну а индийский код, напоминающий про гланды code_26484.txt
карма: 19

0
файлы: 1code_26484.txt [3.3KB] [562]
Разработчик
Ответов: 26170
Рейтинг: 2127
#14: 2012-01-08 18:44:25 ЛС | профиль | цитата
Леонид писал(а):
ну а индийский код, напоминающий про гланды

Ужость

Да нате вам IC, тестируйте, только отстаньте от меня

code_26485.txt
карма: 22

3
файлы: 1code_26485.txt [2.1KB] [621]
Голосовали:User, filyaxxxcom, Ravilr
Ответов: 8931
Рейтинг: 823
#15: 2012-01-08 19:06:01 ЛС | профиль | цитата
nesco, будем на руках носить (при встрече)
карма: 19

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)