Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Миникласс DWX. (число прочтений - 4379 )
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Миникласс DWX.
05. Января 2011 :: 10:38
Печать  
Для тех, кто использует dynwrapx.dll рекомендую к использованиию класс DWX.
Этот класс расширяет функционал объекта DynamicWrapperX, а именно:

1.Добавляется новый встроенный метод RegisterAddr. Параметры, аналогичны, как у метода Register, за исключением 1-го  - это адрес памяти в пространстве процесса.

Использование данного метода позволяет именовать кусок памяти, как функцию и обращаться ней "напрямую" из скрипта или из 1С-ки. Так же это позволяет делать "ассемблерные" вставки и обращатся к ним непосредственно из 1С.
Кроме этого это позволяет обращаться к "кривым" экспортным функциям и функциям, экспортируемым по ординалу.

2. Снимает ограничение на кол-во вызовов RegisterCallBack.
3. Освобождает память, выделенную методами Register и новым RegisterCallBack.


Рекомендация по использованию - один раз при начале работы, в классе только конструктор.
« Последняя редакция: 16. Января 2011 :: 20:13 - chessman »  

DWX_v2.ert ( 16 KB | Загрузки )
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Миникласс DWX.
Ответ #1 - 05. Января 2011 :: 11:00
Печать  
Простой пример: получить хендл главного окна 1с-можно с помощью перебора окон, а теперь можно проще-вызвав AfxGetModuleState()
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Миникласс DWX.
Ответ #2 - 12. Января 2011 :: 09:20
Печать  
Использовать вместо ранее выложенного?
(http://www.1cpp.ru/forum/YaBB.pl?num=1291513086/24#24)
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Миникласс DWX.
Ответ #3 - 12. Января 2011 :: 09:23
Печать  
CaBaT писал(а) 12. Января 2011 :: 09:20:
Использовать вместо ранее выложенного?
(http://www.1cpp.ru/forum/YaBB.pl?num=1291513086/24#24)


Угу.

ОФФ:на счет "нашего" перехватчика модулей - я там еще обнаружил маленькую ошибку. Если будешь использовать - напиши.
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Миникласс DWX.
Ответ #4 - 12. Января 2011 :: 09:32
Печать  
Пока дальше тестов дело не ушло..  Улыбка

К сожалению сейчас на боевой конфе, с которой я теперь работаю, dynwrapx еще не используется, пока удалось по минимуму внедрить 1cpp, formex и 1sqlite, надеюсь со временем использовать весь набор, с которым я привык работать..

Но решения, предложенные тобой, мне кажется, могут быть полезны, так что по любому себе в кладовочку складываю  Улыбка
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Миникласс DWX.
Ответ #5 - 12. Января 2011 :: 09:39
Печать  
CaBaT писал(а) 12. Января 2011 :: 09:32:
Но решения, предложенные тобой, мне кажется, могут быть полезны, так что по любому себе в кладовочку складываю  Улыбка

Круглые глаза

Я думаю, что решения на основе dwx могут заменить кучу отдельных dll-к.
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Миникласс DWX.
Ответ #6 - 12. Января 2011 :: 09:46
Печать  
chessman писал(а) 12. Января 2011 :: 09:39:
Я думаю, что решения на основе dwx могут заменить кучу отдельных dll-к.

+100
Смех

Ну я их не так и много использую..
Осталось еще добавить dynwrapx, rwidjets, 1spy
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Миникласс DWX.
Ответ #7 - 16. Января 2011 :: 20:26
Печать  
Добавлено еще 2 встроенных метода:
1. GetIDispatch(<Объект>) - возвращает указатель на объект, т.е. адрес памяти.

Код
Выбрать все
Outlook = СоздатьОбъект("Outlook.Application");
pObj    = Wrap.GetIDispatch(Outlook); 



2. GetObject(<адрес>)  - возвращает объект, вызывая IDispatch::AddRef


В качестве бреда...как это хотелось бы использовать...есть желание написать на dwx, что-то а-ля EventProxy от steban'а, только вместо сериализации объекта, передавать в ОбработкуВнешнегоСобытия указатель на объект в HEX-е(т.е. адрес в текстовом виде)тогда в 1С можно будет спокойно получить сам объект, вызвав Wrap.GetObject().
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Миникласс DWX.
Ответ #8 - 17. Января 2011 :: 06:42
Печать  
Ох ё...
Такое я пока не использовал.. Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать