Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
17th
Июн
Как в другом окне кликнуть на кнопку
Posted by Chas under Delphi
Объясните как можно из любого окна вытащить любую информацию и занести туда другую (зная хэндл и класс окна и объекта). И как в другом окне кликнуть на кнопку. Если можете объясните толково и если не сложно с примерами.
TwiX
Чтобы щелкнуть на кнопку, нужно получить её хендл, а потом использовать SendMessage(but, BM_CLICK, 0, 0);, где but — хендл кнопки.
Основное окно ищется с помощью adder:=FindWindow(‘TAddContactForm. UnicodeClass’, ‘Program Name’);, где adder — переменная, куда положиться хендл, ‘TAddContactForm.UnicodeClass’, ‘Program Name’ — класс окна и его заголовок соответсвенно (можно писать только что-то одно, как в примере ниже).
Далее начинаем искать кнопку:
but:=FindWindowEx(adder, 0, 'TPanel', nil); - tpanel - класса объекта содержащего кнопку, nil - и его заголовок (или можно не использовать)
but:=FindWindowEx(but, 0, 'TTntPageControl.UnicodeClass', nil);
but:=FindWindowEx(but, 0, 'TTntTabSheet.UnicodeClass', 'sheetFirst');
but:=FindWindowEx(but, 0, 'Button class', 'Text');
В данном случае мы найдёём кнопку которая находилась в
‘TPanel’->’TTntPageControl.UnicodeClass’->’TTntTabSheet.UnicodeClass’->Наша кнопка
FindWindow(Ex) возратит 0, если не найдёт подходящего контрола.
2. Получить текст окна можно тоже с помощью sendmessage(или postmessage) используя wm_gettext вместо bm_click (как Вы уже догадались — это сообщения виндоса =) )
Сообщение: wm_gettext Копиpует текст, связанный с окном, в имеющийся буфеp.
Паpаметpы:
wparam: Максимальное число байт, котоpые могут быть скопиpованы в буфеp lparam.
lparam: Является указателем на буфеp. Буфеp должен иметь длину не менее wparam байт. Возвpащаемое значение: Если окно является блоком списка и нет выбpанных элементов, возвpащается lb_err. если окно является комбиниpованным блоком, не имеющим оpгана упpавления pедактиpованием, возвpащается cb_err. В пpотивном случае, возвpащается число скопиpованных байт, включая пустой символ окончания. Комментаpии: Для оpганов упpавления pедактиpованием текст является содеpжимым оpгана упpавления pедактиpованием. Для оpганов упpавления кнопок текст является именем кнопки. Для комбиниpованных блоков текст является содеpжимым оpгана упpавления pедактиpованием комбиниpованного блока. Для всех дpугих окон текст является заголовком окна. См. также wm_gettextlen и wm_settext.Сообщение: wm_gettextlength Возвpащает длину в байтах текста, связанного с окном
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)