Блог

Как пройти в библиотеку? Пример подключения не подключаемого

Блог разработчика
Добрый день, друзья инженеры! Решал недавно я задачу, по подключению к скрипту библиотеки которая не является не COM не ActiveX.
Оказывается это возможно. Для этого используют DynamicWrapper
Подключать будем IBEScript.dll - не самая популярная библиотека, зато если подключил её - можно жениться.
Пример кода с комментариями:
Set Wrap = CreateObject("DynamicWrapperX") ' Подключаем объект
Wrap.Register "IBEScript.dll","ExecScriptFile", "i=shhh" ' Регистрируем метод внешней библиотеки. Тут используется версия х86 по желанию можно использовать х64 (но она сырая). "i=shhh" - означает, что метод ExecScriptFile принимает в качестве входящих параметров строку и 3 события Handle

Set Handle_Error=GetRef("HandleError") ' Создаем подписку на события метода HandleError
FuncHandleError = Wrap.RegisterCallback(Handle_Error, "i=sp") ' Регистрируем колбэк метода "i=sp" - будет возвращена строка и еще что-то

Set Before_Exec=GetRef("BeforeExec")' Создаем подписку на события метода BeforeExec
FuncBeforeExec = Wrap.RegisterCallback(Before_Exec, "i=sp") 

Set After_Exec=GetRef("AfterExec")' Создаем подписку на события метода AfterExec
FuncAfterExec = Wrap.RegisterCallback(After_Exec, "i=sp") 

Test=Wrap.ExecScriptFile("D:суперскрипт.sql",FuncHandleError,FuncBeforeExec,FuncAfterExec) ' Непосредственно вызов метода. Метод должен выполнить скрипт "суперскрипт.sql" из файла.

function HandleError(hwnd, lparam) ' Вывод сообщения об ошибке, событие.
msgbox "Err "&hwnd&vbcrlf&lparam
end function

function BeforeExec(hwnd, lparam) ' Событие перед выполнением. В сообщении будет текст строки подключения из скрипта.
msgbox "BE "&hwnd&vbcrlf&lparam
end function

function AfterExec(hwnd, lparam) ' Событие после выполнением. В сообщении будет текст скрипта.
msgbox "AE "&hwnd&vbcrlf&lparam
end function
Используя такой подход, можно подключить всё что угодно. Больше примеров на сайте разработчика DynamicWrapper