Вход | Регистрация


1С:Предприятие ::

Метки: 

Получить текст модуля из сторонней программы

Я
   qeos
 
27.03.18 - 15:23
Собственно троли проходят мимо.

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

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

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

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

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

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

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

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

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

Ну и прочие запятые. Что бы ты без нас делал, а?
   qeos
 
2 - 27.03.18 - 16:33
   qeos
 
3 - 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 компоненты..
   eenvo
 
4 - 27.03.18 - 16:50
Кстати да. Можно еще для этого развернуть микросервис на докере и и устроить хакатон. Это будет так по 1с-ному...
   Buster007
 
5 - 27.03.18 - 16:55
нажать программно принт скрин и сохранить картинку по определенному пути
   Ц_У
 
6 - 27.03.18 - 17:02
(5) потом распознать ее в текст, изменить и вернуть назад
   eenvo
 
7 - 27.03.18 - 17:03
(5) C использованием временного хранилища! Сколько повторять можно?
   eenvo
 
8 - 27.03.18 - 17:03
(6) Про "вставить текст обратно" буде другая тема (:
   Локи-13
 
9 - 27.03.18 - 17:07
Можно написать нейронную сеть, которая будет анализировать скриншот на предмет поиска текста.
   Кирпич
 
10 - 27.03.18 - 17:10
(0) Копай в сторону
"3. получить память 1с, какимто образом найти отображаемый в окне участок памяти с модулем."

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

Только Ctrl-А\Ctrl-C. Или идти на поклон к Орефкову (Снегопат), но вроде и у него с этим были проблемы.
Наиболее оптимальный путь - это вызывать конфигуратор для выгрузки в файл и анализ файла, как ЕДТ делает.
Удачи.
   DrZombi
 
23 - 29.03.18 - 06:35
(0) Вам нужен разработчик https://snegopat.ru/
У него поболее познаний
   DrZombi
 
24 - 29.03.18 - 06:39
(11) Мертворожденный проект, им бы в массы на халяву пустить, тогда бы разошлась сея приблуда.

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



Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует