Имя: Пароль:
1C
 
Получить текст модуля из сторонней программы
0 qeos
 
27.03.18
15:23
Собственно троли проходят мимо.

Задача: получить текст модуля (в дальнейшем текст формы) из сторонней программы. в частности это Embarcadero Delphi XE 10.

В чем проблемма: обходя хендлы окон можно найти окно 1с в котором отображается текст модуля. И все. Дальше элементов не видать. А на форме по идее должны быть элементы панелей, кнопок, редактирования, но т.к. это не стандартные элементы windows form то хендлов элементов нет.

собственно надо получить текстовое содержимое этого окна. как?

Идеи: как бы есть несколько вариантов обхода:
1. отправить сочетания клавиш окну, чтобы выделить весь текст и скопировать его в буфер обмена, а потом достать из буфера.
2. как то (как?) пройтись по элементам формы и вытащить какимто (каким?) образом текст из поля редактирования
3. получить память 1с, какимто образом найти отображаемый в окне участок памяти с модулем.

в общем как?
1 eenvo
 
27.03.18
15:53
> троли
Пишется "тролли".

> программы. в частности
Заглавная буква.

> проблемма
Пишется "проблема".

> собственно надо получить текстовое содержимое этого окна. как?
Заглавные буквы.

> какимто
Пишется "каким-то".

> в общем как?
Заглавные буквы.

Ну и прочие запятые. Что бы ты без нас делал, а?
2 qeos
 
27.03.18
16:33
3 qeos
 
27.03.18
16:38
Не уж то и тут нет таких, кто в теме? Что-то я даже теряюсь, где еще можно спросить такие специфичные вопросы.

Вчера спросил на фриноде "how to get text of window from another applilcation?" на #windows ответили "just press right mouse button and select 'copy' command".. Kappa. А на #csharp пледложили использовать OCR компоненты..
4 eenvo
 
27.03.18
16:50
Кстати да. Можно еще для этого развернуть микросервис на докере и и устроить хакатон. Это будет так по 1с-ному...
5 Buster007
 
27.03.18
16:55
нажать программно принт скрин и сохранить картинку по определенному пути
6 Ц_У
 
27.03.18
17:02
(5) потом распознать ее в текст, изменить и вернуть назад
7 eenvo
 
27.03.18
17:03
(5) C использованием временного хранилища! Сколько повторять можно?
8 eenvo
 
27.03.18
17:03
(6) Про "вставить текст обратно" буде другая тема (:
9 Локи-13
 
27.03.18
17:07
Можно написать нейронную сеть, которая будет анализировать скриншот на предмет поиска текста.
10 Кирпич
 
27.03.18
17:10
(0) Копай в сторону

"3. получить память 1с, какимто образом найти отображаемый в окне участок памяти с модулем."

Через недельку другую охладеешь к своей гениальной идее и проблема исчезнет сама собой.
11 Ц_У
 
27.03.18
17:13
12 qeos
 
27.03.18
18:04
(11) про ЕДТ я в курсе, но хотелось бы другого
13 qeos
 
27.03.18
18:05
(10) примерно так и делаю всегда. но просто то что хочется сделать, постоянно возникает потребность.
14 qeos
 
27.03.18
18:06
(8) :))) зришь в корень
15 Garykom
 
гуру
27.03.18
18:22
(0) Спорим твоя задача решается намного проще?
16 qeos
 
27.03.18
18:45
(15) хм.. наоборот упростить себе жизнь хочу..
17 Сияющий в темноте
 
27.03.18
18:47
Получить текст модуля можно из окна конфигуратора,а в самой программе модуль используется в компиллированном виде и его текст получить нельзя,хотя,можно прочитать файл базы на диске и оттуда достать модуль
а нсли нужен текст на форме,то подключиться для отладки и перехватить функции gdi,например,ExtTextout,и все,что выводит программа,чеиез перехватчик отправится в файл
18 Ц_У
 
27.03.18
18:57
(0) смысл в чем, ну забрал ты текст в свою программу и дальше то что?
19 b_ru
 
27.03.18
18:57
У 1С есть ключи командной строки, которые позволяют выгрузить все тексты модулей в обычные текстовые файлы. Пойдет? Или ты какой-то IntelliSense пытаешься написать и нужен оперативный доступ к несохраненному тексту модуля?
20 Garykom
 
гуру
27.03.18
19:01
(19) Для 2-го есть https://marketplace.visualstudio.com/items?itemName=xDrivenDevelopment.language-1c-bsl и можно допиливать ))
21 qeos
 
28.03.18
19:49
(19) да.. хотлосьбы прям в пофигураторе чтото делать..
22 int32i
 
28.03.18
21:43
//получить текст модуля//
Только Ctrl-А\Ctrl-C. Или идти на поклон к Орефкову (Снегопат), но вроде и у него с этим были проблемы.
Наиболее оптимальный путь - это вызывать конфигуратор для выгрузки в файл и анализ файла, как ЕДТ делает.
Удачи.
23 DrZombi
 
гуру
29.03.18
06:35
(0) Вам нужен разработчик https://snegopat.ru/
У него поболее познаний
24 DrZombi
 
гуру
29.03.18
06:39
(11) Мертворожденный проект, им бы в массы на халяву пустить, тогда бы разошлась сея приблуда.

Я вот даже кратким взшлядом на эту презинтацию, не уловил смысла покупать сей функционал :)
25 ildary
 
29.03.18
07:27
(24) несмотря на то, что в настоящее время EDT непригоден для работы, вы же не будете отрицать, что конфигуратор устарел морально уже лет 10 назад и надо на замену ему что-то делать. Посмотрите сколько проектов родилось по допилке - snegopat, TurboConf, другие (не помню названий) - не от скуки же они появились?
26 DrZombi
 
гуру
29.03.18
07:43
(25) Я сейчас на УПП, работаю с отключенной функцией "Автоматическая Контекстная подсказка", не реально тормозит  на больших модулях. :)
27 DrZombi
 
гуру
29.03.18
07:44
+ Я конечно не против новых доработок, но не так что бы программирование с новыми доработками превращалось в каторгу :)
28 Тихий омут
 
29.03.18
07:58
(26) "Не реально тормозит" - это ты так мягко, невесомо даже выразился:) Мои эмоции по этому поводу без цензуры непередаваемы:)
29 qeos
 
29.03.18
15:23
да понятно что EDT умеет.
я хотел кое-какую функциональность в конфигураторе. в EDT эта функциональность не нужна. она там практически есть.
Закон Брукера: Даже маленькая практика стоит большой теории.