Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Управление приложением, написанным на Delphi6 / 11 сообщений из 11, страница 1 из 1
17.06.2021, 17:25
    #40078354
Dual_Bios
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление приложением, написанным на Delphi6
Добрый день !

Есть желание заказчика иметь возможность управлять через сторонние продукты автоматизации нашим софтом, написанным на Delphi6.
Сделать скрипты, сценарии ..

Все бы хорошо, но продуктам этим для автоматизации нужны уникальные идентификаторы объектов, это не свойства компонентов,
они не видны в их интерфейсе. Например вот кнопка тулбара (см прилагаемый файл), также комбобоксы в формах и т д.

Как и что можно добавить в наш софт, чтобы это стало доступно снаружи ? Есть ли примеры ?

Пытаются смотреть вот этим продуктом https://accessibilityinsights.io/docs/en/windows/overview/
...
Рейтинг: 0 / 0
17.06.2021, 17:29
    #40078356
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление приложением, написанным на Delphi6
пользуй в своей программе только те контролы, которые имеют виндовый хэндл.
сиречь потомки TWinControl.
тогда "сторонние средства автоматизации" смогут до них достучаться.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.06.2021, 18:28
    #40078382
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление приложением, написанным на Delphi6
Dual_Bios,

1) можно теоретически встроить в приложение веб-сервер или какой-нибудь другой сервер для удалённого вызова процедур с параметрами.
через эти процедуры опрашивать статусы, управлять открытием и закрытием окон и т.д.

2) так же, как сказал выше Мимопроходящий, через хендлы. Например, TSpeedButton его не имеет, а TBitButton имеет. Здесь, правда, я вижу проблему: как идентифицировать контрол, чтобы скрипты всё ещё подходили после перекомпиляции проекта. Имени контрола-то нет, по хендлу его не получить. Может, встроить в программу такую штуку: специальный обработчик сообщений, который по хендлу возвращает имя контрола
...
Рейтинг: 0 / 0
17.06.2021, 18:42
    #40078385
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление приложением, написанным на Delphi6
Кроик СемёнМожет, встроить в программу такую штуку: специальный обработчик сообщений, который по
хендлу возвращает имя контрола

В этом случае проще встроить в программу специальный обработчик сообщений, который
выполняет сразу требуемую заказчику работу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.06.2021, 18:56
    #40078391
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление приложением, написанным на Delphi6
Dual_Bios,

Только что нашёл: такие тулзы, как Spy++ или WinSpy++ кроме свойств контролов, которые вы показали на скриншоте, ещё показывают нечто под названием "user data". Возможно, этот параметр можно как-нибудь уникально и предсказуемо инициализировать изнутри программы (чтобы он оставался одним и тем же при добавлении новых контролов на форму / двигании контрола / перемещении на другую панельку на той же форме и т.д.). Потому-что я думаю, если завязаться на BoundingRectangle, то программу никогда в будущем нельзя будет менять без тотальной переделки всех скриптов автоматизации.


Вот что показывает WinSpy++ про TBitBtn-кнопку (смотри скриншот):
...
Рейтинг: 0 / 0
17.06.2021, 20:30
    #40078401
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление приложением, написанным на Delphi6
Кроик Семён
Возможно, этот параметр можно как-нибудь уникально и предсказуемо инициализировать изнутри программы
Это
Код: pascal
1.
SetWindowLongPtr(hwnd, GWLP_USERDATA, ...)

Проблема в том, что Delphi иногда сама туда записывает информацию. Кроме того это доступно только для TWinControl
Кроик Семён
Может, встроить в программу такую штуку: специальный обработчик сообщений, который по хендлу возвращает имя контрола
Я подобным образом интегрировал свое приложение с AutoIt. Была проблема то ли с тулбаром, то ли с TreeView
...
Рейтинг: 0 / 0
18.06.2021, 00:06
    #40078442
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление приложением, написанным на Delphi6
Dual_Bios,
Вводите поддержку аксесабилити, там два варианта есть. Или используй готовую библиотеку с поддержкой
...
Рейтинг: 0 / 0
18.06.2021, 09:01
    #40078475
Dual_Bios
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление приложением, написанным на Delphi6
white_nigger,

добрый день, не понял Вашу мысль, можно подробнее ?
...
Рейтинг: 0 / 0
18.06.2021, 09:03
    #40078477
Dual_Bios
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление приложением, написанным на Delphi6
_Vasilisk_
Кроик Семён
Возможно, этот параметр можно как-нибудь уникально и предсказуемо инициализировать изнутри программы
Это
Код: pascal
1.
SetWindowLongPtr(hwnd, GWLP_USERDATA, ...)

Проблема в том, что Delphi иногда сама туда записывает информацию. Кроме того это доступно только для TWinControl
Кроик Семён
Может, встроить в программу такую штуку: специальный обработчик сообщений, который по хендлу возвращает имя контрола
Я подобным образом интегрировал свое приложение с AutoIt. Была проблема то ли с тулбаром, то ли с TreeView


Можете привести пример такой интеграции ?
...
Рейтинг: 0 / 0
18.06.2021, 11:47
    #40078537
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление приложением, написанным на Delphi6
Dual_Bios
Можете привести пример такой интеграции ?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
procedure WMIntegration(var AMsg: TMessage); message WM_INTEGRATION;

procedure TForm1.WMIntegration(var AMsg: TMessage);
begin
  case AMsg.WParam of
    I_BUTTON1_CLICK: Button1OnClick(Button);
    I_GET_COUNT: AMsg.LParam := StrToInt(Edit1.Text);
    ...........
  end;
  AMsg.Result := 0;
end;
...
Рейтинг: 0 / 0
19.06.2021, 01:30
    #40078811
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление приложением, написанным на Delphi6
Dual_Bios
white_nigger,
добрый день, не понял Вашу мысль, можно подробнее ?
вот это во многих странах приложение в госструктурах не разрешат, если оно не поддерживает accessibility.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Управление приложением, написанным на Delphi6 / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]