Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нажатие на кнопку чужого приложения, Не получается 
:(
    Опции темы
Larry
  Дата 9.12.2008, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ленивый донгловед



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 16.9.2007
Где: Россия

Репутация: нет
Всего: нет



Здравствуйте.

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

Делаю так:
Код
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".

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

Заранее благодарен за ответ...
PM MAIL WWW   Вверх
THandle
Дата 9.12.2008, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



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


Код

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


А так?
PM   Вверх
Larry
  Дата 9.12.2008, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ленивый донгловед



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 16.9.2007
Где: Россия

Репутация: нет
Всего: нет



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

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

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

Это сообщение отредактировал(а) Larry - 9.12.2008, 01:43
PM MAIL WWW   Вверх
THandle
Дата 9.12.2008, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



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

http://forum.vingrad.ru/forum/topic-224716...ndow/index.html
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0805 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.