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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2013, 11:30   #1
cashmail
Форумчанин
 
Регистрация: 23.06.2011
Сообщений: 201
Злость Кликнуть кнопку в другом приложении

Здравствуйте, надо кликнуть в программе на кнопку
Handle программы находит
Код:
h1:=FindWindow('TForm1', 'proga');
Все нормально находит Потом пытаюсь найти Handle кнопки
Код:
h2 := findwindowex(h1,0,'TButton','Button5');
Но handle = 0
Прикладываю архитектуру программы (программой Restorator 2005)
Код:
object Button5: TButton
        Left = 264
        Top = 360
        Width = 75
        Height = 25
        Caption = 'Button5'
        TabOrder = 4
        Visible = False
        OnClick = Button5Click
      end
Ничего понять не могу, помогите пожалуйста!

P.S. У этой кнопки Visible = False, но например кнопку
Код:
      object Button1: TsButton
        Left = 391
        Top = 7
        Width = 105
        Height = 25
        Caption = 'Искать!'
        TabOrder = 8
        OnClick = Button1Click
        SkinData.SkinSection = 'BUTTON'
      end
Код:
h2 := findwindowex(h1,0,'TsButton','Искать!');
Вложения
Тип файла: txt proga.txt (34.2 Кб, 116 просмотров)

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

С помошью Spy++ посмотри дерево окон - есть ли там такая кнопка в твоем окне и как она вложена.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.08.2013, 12:04   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Там кнопка в TTabSheet, тот в свою очередь в TPageControl. Т.е. родитель формы не кнопка
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.08.2013, 12:08   #4
cashmail
Форумчанин
 
Регистрация: 23.06.2011
Сообщений: 201
По умолчанию

А можно ссылочку? Просто она идет в visual studio 2005, а она много весит((
Аватар, тогда что мне делать?
cashmail вне форума Ответить с цитированием
Старый 14.08.2013, 12:13   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

По цепочке хендлов по вложениям от одного окна к другому с помощью findwindowex
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.08.2013, 12:18   #6
cashmail
Форумчанин
 
Регистрация: 23.06.2011
Сообщений: 201
По умолчанию

Код:
h2 := findwindowex(h1,0,'TTabSheet',nil);
Дает 0
Код:
h2 := findwindowex(h1,0,'TsPageControl','Поиск контактов');
Дает 0
cashmail вне форума Ответить с цитированием
Старый 14.08.2013, 12:28   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А так?
Код:
h2 := findwindowex(h1,0,'TsPageControl','PageControl1');
h3 := findwindowex(h2,0,'TsTabSheet','Поиск контактов');
h4 := findwindowex(h3,0,'TsButton','Искать!');
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.08.2013, 12:31   #8
cashmail
Форумчанин
 
Регистрация: 23.06.2011
Сообщений: 201
По умолчанию

Код:
h2 := findwindowex(h1,0,'TsPageControl','PageControl1');
Уже выдает 0
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 h1,h2: Dword;
begin
h1:=FindWindow('TForm1', 'proga');
if h1<>0 then
begin
h2 := findwindowex(h1,0,'TsPageControl','PageControl1');
ShowMessage(IntToStr(h2));
end
else ShowMessage('Окно не найдено!!!');
end;
Выдает 0
cashmail вне форума Ответить с цитированием
Старый 14.08.2013, 12:44   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

http://programmersforum.ru/showpost....83&postcount=8
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.08.2013, 12:54   #10
cashmail
Форумчанин
 
Регистрация: 23.06.2011
Сообщений: 201
По умолчанию

Скачал прогу, получилось как сказал Аватар
Цитата:
Там кнопка в TTabSheet, тот в свою очередь в TPageControl
Но его пример не работет

Последний раз редактировалось cashmail; 14.08.2013 в 12:57.
cashmail вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# Отловить нажатие кнопки в другом приложении drayvhard C# (си шарп) 2 13.07.2012 13:30
Проблема с нажатием клавиши в другом приложении Bl@ckGold Общие вопросы Delphi 6 14.05.2011 17:37
Как кликнуть на нужную кнопку в IWebBrowser2? Wadimka Общие вопросы Delphi 0 19.05.2009 13:11
Изменение SysListView32 в другом приложении Legos Общие вопросы Delphi 1 16.10.2007 02:29
Выделенный текст в другом приложении Nez Win Api 9 09.04.2007 01:52