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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2015, 15:50   #1
adkomissarov
Пользователь
 
Регистрация: 21.01.2015
Сообщений: 37
Вопрос Не срабатывает функция FindWindowEx, в чем причина?

Помогите пожалуйста разобраться, не срабатывает функция FindWindowEx. Суть такая: хочу нажатием кнопки запустить .exe, там инсталлятор программы, на первом шаге установки хочу нажать кнопку "Далее", но функция не срабатывает.
Вот код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
h1:HWND;
h2:HWND;
begin
WinExec('c:\777.exe', SW_SHOW);
h1 := FindWindow ('#32770', 0);
if  h1<> 0  then
h2 := FindWindowEx(h1, 0,'Button', '&Далее >');
SendMessage(h2,BM_CLICK,0,0);
end;
FindWindow подхватывает окно нормально, а вот FindWindowEx не подхватывает кнопку. Работоспособность каждой проверял ShowMessage'ом, с h2 он не сработал. Сильно не ругайте если ошибка пустяковая, ибо сегодня первый раз открыл Delphi, да и вообще в программировании 0, все это составил путём дружбы с гуглом и общим представлении о программировании 9 летней давности. Если можно то пожалуйста максимально подробнее. Заранее большое спасибо.

Последний раз редактировалось Stilet; 21.01.2015 в 16:28.
adkomissarov вне форума Ответить с цитированием
Старый 21.01.2015, 16:32   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Проверяй тщательнее:
Код:
h1 := FindWindow ('#32770', 0);
if  IsWindowVisible(h1)  then begin
 h2 := FindWindowEx(h1, 0,'Button', '&Далее >');
 if IsWindow(h2) then begin
   PostMessage(h2,BM_CLICK,0,0);
 end else ShowMessage('Это не окно');
end else ShowMessage('Окно такое не нашел');
Вот теперь смотри, не вылезет ли сообщение что это не окно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.01.2015, 16:41   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

не факт, что кнопка лежит непосредственно на окне.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 21.01.2015, 18:16   #4
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
не факт, что кнопка лежит непосредственно на окне.
Верно, может лежать на TPanel, например...
И не факт, что это именно Button
Вдруг это потомок TImage?

Последний раз редактировалось kropotkina-alice; 21.01.2015 в 18:18.
kropotkina-alice вне форума Ответить с цитированием
Старый 21.01.2015, 18:54   #5
adkomissarov
Пользователь
 
Регистрация: 21.01.2015
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вот теперь смотри, не вылезет ли сообщение что это не окно.
Говорит что не нашел. h1 же определяет окно нормально по классу, почему h2 говорит что не нашел?
adkomissarov вне форума Ответить с цитированием
Старый 21.01.2015, 19:04   #6
NIKOLAYY2
Форумчанин
 
Регистрация: 23.12.2014
Сообщений: 220
По умолчанию

adkomissarov
Сделай скрин программы, которая у тебя открытые окна показывает.
Может у тебя там окно в окне и ты это не учел.
NIKOLAYY2 вне форума Ответить с цитированием
Старый 21.01.2015, 19:17   #7
adkomissarov
Пользователь
 
Регистрация: 21.01.2015
Сообщений: 37
По умолчанию

Цитата:
Сообщение от NIKOLAYY2 Посмотреть сообщение
adkomissarov
Сделай скрин программы, которая у тебя открытые окна показывает.
Может у тебя там окно в окне и ты это не учел.
Держи пожалуйста:
chxml.PNG
adkomissarov вне форума Ответить с цитированием
Старый 21.01.2015, 19:20   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Кнопку Далее найти? О причинах уже говорили
- это может быть не окно
- даже если окно, у него родитель не обязательно форма
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.01.2015, 19:23   #9
adkomissarov
Пользователь
 
Регистрация: 21.01.2015
Сообщений: 37
По умолчанию

Вот информация о софтинке определения класса окна:
CIS_wind.PNG
Вот кнопки:
CIS_butt.PNG
Цитата:
- даже если окно, у него родитель не обязательно форма
Вот я и хочу разобраться и понять как автоматом нажать кнопку "далее".
adkomissarov вне форума Ответить с цитированием
Старый 21.01.2015, 19:31   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Скорее всего так и есть. Не на самом окне она а на "окне в его окне".
Интересно а зачем понадобилось автокликать инсталлятор?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не открывает PHP! В чем причина??? Sergey88 PHP 1 10.07.2012 11:11
в чем причина Arassir PHP 2 04.11.2011 12:56
в чем причина ошибки? obsession Паскаль, Turbo Pascal, PascalABC.NET 2 27.10.2011 19:57
В чем причина ошибки? Operator not... Effort Помощь студентам 0 20.06.2011 03:35
2 ошибки в макросе, в чем причина? robbe Microsoft Office Excel 4 15.02.2010 14:03