Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2009, 13:50   #1
senia
 
Регистрация: 23.12.2009
Сообщений: 7
По умолчанию API определение дочернего окна

Пишу для MUonline кликер, столкнулся с такой проблемой, окно определяется а вот дочернее окно никак. Не хочет тыкать мышка.

Последний раз редактировалось senia; 24.12.2009 в 13:58.
senia вне форума Ответить с цитированием
Старый 24.12.2009, 16:19   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

как пытались определить то?
и какое именно окно надо?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.12.2009, 16:53   #3
senia
 
Регистрация: 23.12.2009
Сообщений: 7
По умолчанию

Цитата:
procedure TForm1.Button1Click(Sender: TObject);
var
H: HWND;
He: HWND;
Pt:TPoint;

begin

pt.x:=200;
pt.y:=200;
H:= findwindow (nil,'MU');
He:= FindWindowEx (H,0,'Edit',nil);

postmessage(He,WM_LBUTTONDOWN,0,(pt .x shl 16)+ pt.y);
postmessage(He,WM_LBUTTONUP,0,(pt.x shl 16)+ pt.y);

end;
end;
Нужно чтоб в приложении мышкой можно было везде ткнуть.
senia вне форума Ответить с цитированием
Старый 24.12.2009, 17:49   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
He:= FindWindowEx (H,0,'Edit',nil);
этим вы находите лишь первый дочерний Эдита
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.12.2009, 23:36   #5
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Мне кажется тут нужно через EnumWindows. Вот только я не понял как с ним работать в Delphi(.
psycho-coder вне форума Ответить с цитированием
Старый 25.12.2009, 00:02   #6
senia
 
Регистрация: 23.12.2009
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
Код:
He:= FindWindowEx (H,0,'Edit',nil);
этим вы находите лишь первый дочерний Эдита
если я правильно понял, все дочернии окна приложения имеют клас Edit, как перебрать их?
senia вне форума Ответить с цитированием
Старый 25.12.2009, 01:23   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

начнем с того что EnumChildWindows

Код:
Edits:array of HWND;

function EnumEdits(H:HWND;i:integer):BOOL;stdcall;
var s:string;
begin
 Result:=true;
 setLength(s,256)
 GetClassName(H,PChar(s),255);
 SetLength(s,lStrLen(PChar(s)));
 if ANSIApperCase(s)<>'EDIT' then exit;
 SetLength(Edits,Length(Edits)+1);
 Edits[Length(Edits)]-1:=H;
end;


//это в обработчик кнопки пишем
 SetLength(Edits,0);
 EnumChildWindows(findwindow(nil,'MU'),{может @ надо}EnumEdits,0);
//итог в массиве Edits у нас все EDIT контролы родителями котрого явлется окно MU
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
главное MDI без заголовка дочернего vlad_ Общие вопросы Delphi 3 27.11.2009 01:51
Изменение данных дочернего окна damned20 Win Api 1 11.08.2009 13:04
Выделение дочернего окна и пункта меню joker Win Api 7 04.02.2009 18:16
Получение хэндла дочернего контрола Lich Win Api 7 01.07.2008 10:58
Разбиение дочернего окна на колонки... HunterMan Win Api 3 03.04.2008 23:19