Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.09.2017, 11:13
Himmelsbach Himmelsbach вне форума
Прохожий
 
Регистрация: 16.09.2017
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Окна

Как нажимать на кнопки в чужом окне? Я знаю как к нему подключиться, делаю я это вот таким способом:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var q:Thandle;
begin
q:=findwindow('QWidget','iCCup Launcher');
if q <> 0 then
begin
Label1.Caption:='Подключён';
end
else
Label1.Caption:='Не подключён';
end;
Админ: Пользуемся тегами при оформлении кода!

В Label выводится текст 'Подключён';
Нашел класс окна и имя через программу WinSpy.
Окно в котором я хочу нажимать на кнопки называется ICCup Launcher
Я так понял чтоб нажать на кнопку в чужом окне нужно знать его handle а как его узнать?
Изображения
Тип файла: png Безымянный.png (82.2 Кбайт, 3 просмотров)

Последний раз редактировалось Admin, 16.09.2017 в 12:00.
Ответить с цитированием
  #2  
Старый 17.09.2017, 12:24
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Use EnumChildWindows, Luke!
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 18.09.2017, 07:32
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от Himmelsbach
...Я так понял чтоб нажать на кнопку в чужом окне нужно знать его handle а как его узнать?
Если "В Label выводится текст 'Подключён'", то хэндл уже в q

А вообще, можно нажать и так
Код:
procedure ClickOnForm(wnd: HWND; caption: string);
var
TheChildHandle: HWND;
begin
TheChildHandle := FindWindowEx(wnd, 0, nil, PChar(caption));
SendMessage(TheChildHandle, WM_LButtonDown, 1, 1);
SendMessage(TheChildHandle, WM_LButtonUP, 1, 1);
end;

 

procedure TForm1.Button4Click(Sender: TObject);
var
wnd: HWND;
caption: string;
begin
wnd := GetTopWindow(0);

repeat

   SetLength(caption, GetWindowtextLength(wnd));
   GetWindowText(wnd, @caption[1], length(caption) + 1);
   if (trim(caption) = 'iCCup Launcher') then
     ClickOnForm(wnd, 'Имя кнопки');
   wnd := GetNextWindow(wnd, GW_HWNDNEXT);
until wnd = 0;
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter