Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Расширение возможностей dynwrapx.dll (число прочтений - 3590 )
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Расширение возможностей dynwrapx.dll
09. Ноября 2010 :: 16:35
Печать  
Будет ли интересна наработка, расширяющая возможности данной dll?

Суть доработки - добавление нового встроенного метода RegisterAddr, который позволяет объявлять участок кода в памяти процесса, как функцию. Синтаксис метода точно такой же как и у родного метода Register, за исключением первого параметра.

Код
Выбрать все
 RegisterAddr( Addr, FuncName [, i=ParamTypes] [, r=RetValType] ) 



Для чего это нужно? - Это позволяет из 1С-ки напрямую запускать код из памяти процесса. Как вариант - обращение к виртуальным функциям объектов.

В архиве dll, обработка dxw.ert и пример.ert

1. DLL родная, с ресурса http://www.script-coding.info/ в ней я изменил только один байт в PE-заголовке секции .const. Это необходимо, чтобы сделать секцию Writable.
2. Обработка dxw.ert - добавляет новый метод RegisterAddr
3. Пример - я взял его ассемблерный вариант с проклаба и переложил на скрипт. Не знаю, кто реальный автор, т.к. обнаружил его аналог в сорцах 1c++ в ModuleString.cpp
Смысл примера - выводит программный текст внешнего отчета.

Резюме:порядок действий-заменить DLL, запустить отчет dxw (один раз за сеанс), запустить пример.


ЗЫ:данные изменения согласованы с автором этой DLL.
« Последняя редакция: 09. Ноября 2010 :: 19:28 - chessman »  

dxw.zip ( 15 KB | Загрузки )
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Расширение возможностей dynwrapx.dll
Ответ #1 - 09. Ноября 2010 :: 17:19
Печать  
Да в общем классно.
Единственно, трудновато с непривычки код такой читать.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Расширение возможностей dynwrapx.dll
Ответ #2 - 09. Ноября 2010 :: 21:08
Печать  
Улыбка

Еще один мини-пример, демонстрирующий работу с "кривыми" именами экспортируемых функций.
  

Message.ert ( 11 KB | Загрузки )
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать