Обращение к системным библиотекам Windows из кода программ 1С:Предприятие. P/Invoke.

Опубликовал Сергей Карташев (Elisy) в раздел Программирование - Практика программирования

Представленная здесь статья позволяет программистам 1С выйти на системный уровень, используя технологию P/Invoke из .Net framework.

Представленная здесь статья позволяет программистам 1С выйти на системный уровень, используя технологию P/Invoke из .Net framework. Для подключения .Net framework незаменимую помощь окажет внешний компонент Elisy .Net Bridge.

Elisy .Net Bridge - это набор компонентов и методик для бесшовного подключения .Net framework к 1С с целью использования всей функциональности .Net.

Представленная технология дает дополнительные инструменты в арсенал 1С-овцев, позволяя писать практически теже программы, что и на остальных популярных языках программирования под Windows. P/Invoke не ограничен использованием только системных библиотек. Он работает с любыми другими DLL. Например, можно найти примеры в Интернет обращения к DirectX.

Скачать файлы

Наименование Файл Версия Размер
Пример обработки. Требует ВК Elisy .Net Bridge
.epf 7,44Kb
25.11.09
106
.epf 7,44Kb 106 Скачать

См. также

Комментарии
1. Ivon (Ivon) 581 25.11.09 10:01 Сейчас в теме
Минус за рекламу. Если бы разработка не требовала платных ВК - поставил бы плюс. Подобные статьи нужно выкладывать у себя на сайте. Кто купил - найдет пример.
2. Сергей Карташев (Elisy) 840 25.11.09 10:45 Сейчас в теме
(1) С вашим подходом весь Инфостарт посвящен рекламе 1С, которая по сути своей является платной.
3. Ivon (Ivon) 581 25.11.09 18:41 Сейчас в теме
Разница в том, что проект "Инфостарт" не получает дохода от покупки пользователями и компаниями лицензий на 1С и сам доступ к проекту основан на безоплатной основе. А вот ВК, которая обеспечивает дополнительные возможности, которые обеспечивают работу данной обработки платная, и доход от покупки пакета получает конкретная компания.
4. Сергей Карташев (Elisy) 840 26.11.09 05:57 Сейчас в теме
(3) ВК, которая используется в статье по этой ссылке, продается в том числе на Инфостарте. Это значит, что с продажи этой ВК через Инфостарт компания-владелец ВК получает только 50%. Остальные 50% идут на нужды проекта "Инфостарт", а через него и на ваши в том числе.
5. Dmitry The Wing (wing) 19 03.12.09 05:15 Сейчас в теме
Обращение к системным библиотекам Windows из кода программ 1С:Предприятие доступно при использовании комбинации dynwrap.dll + MSScriptControl.ScriptControl, а то что описано - это уже не системные библиотеки, а надстройка над системой, именуемая .Net framework.
6. Сергей Карташев (Elisy) 840 03.12.09 06:19 Сейчас в теме
(5) Речь в статье идет о P/Invoke-технологии - технологии в составе .Net framework, который в свою очередь намного обширнее.
А dynwrap.dll + MSScriptControl.ScriptControl - это разве не две надстройки над системой, в отличие от одной надстройки .Net framework? Из упомянутой пары можно еще что-то полезное выжать или их использование узкоспециализированное? Ответы на эти вопросы приводят к выводу, что во многих случаях предпочтительнее использовать .Net framework, конечно при этом узкий круг задач оставив альтернативным технологиям.
7. Dmitry The Wing (wing) 19 04.12.09 04:30 Сейчас в теме
(6) dynwrap.dll сложно назвать надстройкой, - это скорее переходник по принципу очень похожий на Invoke, а MSScriptControl.ScriptControl - это часть системы.
Суть моего комментария была в другом - вы предлагаете использовать аж ДВЕ прослойки, одна из которых платная, в то время, как уже давно существует БЕСПЛАТНАЯ dll, способная ПРОЗРАЧНО выполнять те же функции.
8. Сергей Карташев (Elisy) 840 04.12.09 07:06 Сейчас в теме
(7)
Способ статьи и предложенный вами способ используют надстройки, так как нельзя напрямую вызывать в 1С функции библиотек (прямой вызов можно выполнять только в C++). При этом MSScriptControl.ScriptControl и .Net framework - это части системы (Net - часть системы, начиная с Windows Vista). Elisy .Net Bridge - тоже переходник. По количеству и качеству прослоек оба метода схожи.

Сами по себе обращения к системным библиотекам малоинтересны. Системные библиотеки возвращают указатели, в лучшем случае строки. Как их потом использовать? Использование способа, предложенного вами ограничен функционалом JScript и VBScript. Способ, описанный в статье обращается к функционалу .Net Framework. Оба способа соотносятся примерно как VBScript/JScript к VB.Net/Java, в пользу последних.

Понятно, что нельзя категорично сказать, что способ, описанный в статье единственно правильный, также как нельзя сказать тоже самое о любом другом способе. Хорошо, что есть альтернативы. Но когда требуется что-то большее, чем единичный вызов системной функции, Net framework может стать отличным вариантом, даже с платной ВК. Например, методика этой статьи используется при рисовании изображения на окне 1С или при показе диаграмм http://infostart.ru/public/61969/
9. Dmitry The Wing (wing) 19 07.12.09 04:37 Сейчас в теме
(8) Спорить бесполезно. На вкус и цвет все фломастеры разные ...
Те, кто привык использовать компоненты .Net и кого не пугает необходимость заплатить за ваш переходник, - тех это устроит.
Тем, кто привык к использовнаию WinAPI, проще будет использовать описанный мною бесплатный вариант или же реализовать свою dll.
Также знаю многих, кому проще будет реализовать свой COM/OLE-сервер, а в этом случае уже не важно, на .Net'е оно реализовано или же на win32, - COM универсален и 1С прекрасно может использовать вызовы методов интерфейсов без каких-либо переходников, как и любая другая программа.
P.S.: Чтобы не быть голословым - сам я ранее разрабатывал и использовал как свои dll (delphi/c++builder), так и dynwrap.dll (что описано выше), а также OLE-сервера (delphi/c++builder/.Net).