Тема: Подключение библиотек(*.dll) к автокаду

Люди, прошу Вас, кто что знает, отзовитесь. Как можно подключить библиотеки программы VBA к Автокаду. Может плоско выразился, но думаю суть понятна. Буду рад любой помощи.

Re: Подключение библиотек(*.dll) к автокаду

Суть как раз не очень понятна.
VBA не создаёт библиотек dll.
У тебя есть библиотеки написанные на VB которые ты хочешь подключить к автокаду?
Поподробнее пожалуйста.

Re: Подключение библиотек(*.dll) к автокаду

Да

Re: Подключение библиотек(*.dll) к автокаду

Алекс. Я всё еще не могу понять сути проблемы.
Опиши все подробно.Что за DLL? Сделана с использованием библиотек автокада?Как связывается с автокадом?Если не хочешь писать в форум пиши на E-Mail.

Re: Подключение библиотек(*.dll) к автокаду

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

Re: Подключение библиотек(*.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 передаешь адрес функции и ее параметры.
Во втором случае (неявное связывание длл) в модуле просто указываешь прототипы функций и затем их вызываешь.
Вот вроде и все!

Re: Подключение библиотек(*.dll) к автокаду

Да, забыл сказать: cкачай из инета MASM32 и затем запиши
код длл (см. предыдущий мой ответ) в файл, например,  DllName.asm и
1) ml /c /coff DllName.asm
2) LINK.EXE /SUBSYSTEM:WINDOWS /DLL DllName.obj
И все! Длл готова! Даже не надо asm учить :)

Re: Подключение библиотек(*.dll) к автокаду

> 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

Re: Подключение библиотек(*.dll) к автокаду

Ув. коллеги!
Зачем применять api-функции, когда можно обойтись без них.
Пример кода по подсоединению компонента .dll к VBA-программе (2003-16-06) приведен из работающей программы.

Re: Подключение библиотек(*.dll) к автокаду

> [b]Leonid[/b]
>Зачем применять api-функции, когда можно обойтись без них.
-Ведь alex хотел знать все о связывании длл с exeшником

Re: Подключение библиотек(*.dll) к автокаду

да, интересовало то dll к autocadу

Re: Подключение библиотек(*.dll) к автокаду

Leonid пишет:

Зачем применять api-функции, когда можно обойтись без них.Пример кода по подсоединению компонента .dll к VBA-программе (2003-16-06) приведен из работающей программы.

Ну хорошо. А как к ним обращаться-то.

AL пишет:

да, интересовало то dll к autocadу

Хорошо бы Alex сам бы что-то ответил.

Re: Подключение библиотек(*.dll) к автокаду

> AL (2003-07-11 08:13:21)
>да, интересовало то dll к autocadу

- acad.exe это и есть "к autocadу" :)

Re: Подключение библиотек(*.dll) к автокаду

На сайте http://www.alx.ncn.ru есть программа MtmdLoadDLL.arx. Загружает ЛЮБУЮ DLL в AutoCAD. Может это подойдет?
Alxd
http://www.alx.ncn.ru