Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Нажатие на кнопку чужого приложения


Автор: Larry 9.12.2008, 00:16
Здравствуйте.

Необходимо нажать на кнопку в чужом приложении (которое написано на кларионе)...

Делаю так:
Код
procedure TMainForm.startClick(Sender: TObject);
var
  h, hb: HWND;
begin
  h := FindWindow(nil, 'Приложение');

  if h <> 0 then begin
     hb := FindWindowEx(h, hb, 'ClaButton', 'Выход');

     if hb = 0 then
       MessageBox(MainForm.Handle, 'Не найдена кнопка выхода из приложения!', 'Ошибка', MB_ICONERROR);
  end else
    MessageBox(MainForm.Handle, 'Окно приложения не найдено!', 'Ошибка', MB_ICONERROR);
end;

Компилирую проект, запускаю, но он упорно не видит кнопки "Выход" в окне чужого приложения. С помощью утилиты EnBtn точно определил, что класс кнопки в чужом приложении имеет значение "ClaButton".

Подскажите, пожалуйста, что я делаю не так?

Заранее благодарен за ответ...

Автор: THandle 9.12.2008, 01:31
Цитата(Larry @  9.12.2008,  00:16 Найти цитируемый пост)
hb := FindWindowEx(h, hb, 'ClaButton', 'Выход');


Код

hb := FindWindowEx(h, 0, 'ClaButton', 'Выход');


А так?

Автор: Larry 9.12.2008, 01:43
THandle, да все, верно. Такой код у меня и есть, в сообщении ошибся. Я нашел причину: оказывается на форме была растянута панель и сперва нужно было найти и ее хэндл. Но у меня возникает еще один вопрос: на форме расположено куча компонентов TEdit. Мне нужно найти определенный из них. С помощью функции:
Код
hb := FindWindowEx(h, 0, 'ClaEdit', '');

Я нахожу компоненту на форме, но самую первую. Можно ли найти определенную компоненту, или хотя бы как-то последовательно перебирать компоненты вручную, пока я не найду именно ту, которая мне нужна?

Заранее благодарен за ответ...

Автор: THandle 9.12.2008, 02:16
Larry, либо EnumChildWindows, либо перебирать в цикле окна с помощью GetWindow с GW_HWNDNEXT. Посмотри тему:

http://forum.vingrad.ru/forum/topic-224716/hl/findwindow/index.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)