Тема: Подключение библиотек(*.dll) к автокаду
Люди, прошу Вас, кто что знает, отзовитесь. Как можно подключить библиотеки программы VBA к Автокаду. Может плоско выразился, но думаю суть понятна. Буду рад любой помощи.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Подключение библиотек(*.dll) к автокаду
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Люди, прошу Вас, кто что знает, отзовитесь. Как можно подключить библиотеки программы VBA к Автокаду. Может плоско выразился, но думаю суть понятна. Буду рад любой помощи.
Суть как раз не очень понятна.
VBA не создаёт библиотек dll.
У тебя есть библиотеки написанные на VB которые ты хочешь подключить к автокаду?
Поподробнее пожалуйста.
Алекс. Я всё еще не могу понять сути проблемы.
Опиши все подробно.Что за DLL? Сделана с использованием библиотек автокада?Как связывается с автокадом?Если не хочешь писать в форум пиши на E-Mail.
Sample
macros VBA for programm "SelEdit":
Sub StartVB() Dim vb As StartSelEdit Set vb = New StartSelEdit vb.StartVB ThisDrawing End Sub
Tools->References->SelEdit.dll
Длл можно явно и неявно связывать.
В первом случае тебе понадобятся API функции: LoadLibrary(), GetProcAddress(), FreeLibrary() и, конечно, нужно будет написать свою длл для вызова функции по адресу полученному из GetProcAddress(). Вот пример такой длл:
;############################################ ; Длл для VB(A) ;CallByPtr - для вызова ф-ций по их адресу ;############################################ .386 .model flat,stdcall .code DllMain proc hinst:dword, reason:dword, reserved:dword mov al, 1 ret DllMain endp CallByPtr proc export pop ecx ;Адрес возврата pop edx ;Указатель на ф-ию push ecx jmp edx CallByPtr endp end DllMain
В CallByPtr передаешь адрес функции и ее параметры.
Во втором случае (неявное связывание длл) в модуле просто указываешь прототипы функций и затем их вызываешь.
Вот вроде и все!
Да, забыл сказать: cкачай из инета MASM32 и затем запиши
код длл (см. предыдущий мой ответ) в файл, например, DllName.asm и
1) ml /c /coff DllName.asm
2) LINK.EXE /SUBSYSTEM:WINDOWS /DLL DllName.obj
И все! Длл готова! Даже не надо asm учить :)
> alex
Как подключить DLL к VBA видно из работающего примера. В остальное, думаю разберешся сам.
Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long
Public Function ComputerName(Optional UserName As String) As String
'Функция возвращает имя компьютера и имя пользователя
Const gintMAX_SIZE = 100
Dim sTempString As String
Dim i As Long
Dim smsg As String
sTempString = ""
sTempString = Space$(gintMAX_SIZE)
i = gintMAX_SIZE
GetComputerName sTempString, i
ComputerName = Left$(sTempString, i)
sTempString = ""
sTempString = Space$(gintMAX_SIZE)
i = gintMAX_SIZE
GetUserName sTempString, i
UserName = Left$(sTempString, i - 1)
'smsg = "ComputerName: " & ComputerName & vbNewLine & _
' "UserName: " & UserName
'MsgBox sMsg, vbInformation
End Function
Ув. коллеги!
Зачем применять api-функции, когда можно обойтись без них.
Пример кода по подсоединению компонента .dll к VBA-программе (2003-16-06) приведен из работающей программы.
> [b]Leonid[/b]
>Зачем применять api-функции, когда можно обойтись без них.
-Ведь alex хотел знать все о связывании длл с exeшником
да, интересовало то dll к autocadу
Зачем применять api-функции, когда можно обойтись без них.Пример кода по подсоединению компонента .dll к VBA-программе (2003-16-06) приведен из работающей программы.
Ну хорошо. А как к ним обращаться-то.
да, интересовало то dll к autocadу
Хорошо бы Alex сам бы что-то ответил.
> AL (2003-07-11 08:13:21)
>да, интересовало то dll к autocadу
- acad.exe это и есть "к autocadу" :)
На сайте http://www.alx.ncn.ru есть программа MtmdLoadDLL.arx. Загружает ЛЮБУЮ DLL в AutoCAD. Может это подойдет?
Alxd
http://www.alx.ncn.ru
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Подключение библиотек(*.dll) к автокаду
Форум работает на PunBB, при поддержке Informer Technologies, Inc