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

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

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

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

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

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

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

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

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


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

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

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

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


Можете привести пример такой интеграции ?
...
Рейтинг: 0 / 0
Управление приложением, написанным на Delphi6
    #40078537
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Управление приложением, написанным на Delphi6
    #40078811
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dual_Bios
white_nigger,
добрый день, не понял Вашу мысль, можно подробнее ?
вот это во многих странах приложение в госструктурах не разрешат, если оно не поддерживает accessibility.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Управление приложением, написанным на Delphi6
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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