Don Leno писал(а):Какая?
В общем случае какая угодно. Может быть даже до обеда одна, а после обеда — другая.
Ты хочешь отправлять почту, но не хочешь понимать суть вещей. Технология ActiveX предлагает тебе думать о
компонентах, а не о DLL-файлах, внутри которых расположен код этих компонентов. Для тебя же первичен именно класс
CDO.Message, а не какой-то там файл.
Поэтому технология предоставляет тебе концепцию, когда для создания экземпляра класса ты даёшь информацию только о классе, экземпляр которого тебе нужен, а не о EXE или DLL, который обеспечит его работу. Ни ты, ни твой программа — не думаете о DLL-файле, только о самом классе.
И сама система берёт на себя задачу: по информации о нужном классе найти расположение нужной DLL. Для этой цели она использует реестр, где содержится информация о соответствии классов и ActiveX-серверов (то есть DLL/OCX/EXE-файлов), обеспечивающих порождение экземпляров и их работу.
Информация попадает туда в момент регистрации ActiveX-сервера. EXE-серверы регистрируют себя сами. DLL-серверы предоставляют экспортируемую функцию, которая может быть вызвана с лёгкостью, например, с помощью утилиты regsvr32. Или она может туда попасть ещё каким-то путём. Главное, чтобы она туда попала.
Регистрация компонента происходит при установке компонента на компьютер.
Поэтому, во-первых,
ты не можешь просто взять DLL-файл и «такскать в папке с программой». Это ничего не даст, поскольку система ищет DLL-файл для
CDO.Message глядя в реестр, и если в реестре ничего нет, то никакого толку от лежащего рядом файла не будет абсолютно.
Во-вторых,
не читая лицензионного соглашения, принимать решение таскать в папке с программой некий DLL-файл — мало того, что бесполезно, но ещё и отличный способ стать преступником. Далеко не каждое ПО имеет лицензию, разрешающую свободно распространять вместе с чужим софтом свои кусочки.
Если тебе необходимо создавать экземпляры класса
CDO.Message, значит ты должен позаботиться, чтобы компонент «CDO» был установлен на целевой машине. Установлен ли он на любой машине, или только на некоторых, и если да, то на каких, и с каким софтом он там появился, и можно ли установить его туда, где его нет, самостоятельно — всё это индивидуально для каждого компонента,
и в каждом отдельном случае ты должен узнавать это у разработчика и поставщика компонента (у его поддержке, в его хелпе и т.д.).
На своём компьютере ты можешь узнать, какой DLL-файл отвечает за
CDO.Message — но это малополезная информация, потому что на другом компьютере может быть установлена другая версия CDO, в которой за это отвечает уже другой DLL-файл. В разных версиях одного компонента, пусть даже это будет внешне абсолютно один и тот же
CDO.Message, но изнутри разница между двумя слабо отличающимися версиями может быть разительной. Это могут быть разные DLL-файлы, или разные наборы, которые могут жить в разных местах.
Тебе не нужно думать о файлах, тебе нужно думать о компоненте. Тебе нужно задаваться вопросом не «какие файлы скопировать на целевую машину», а «как на целевую машину установить компонент X».
В случае, когда компонент попадает на целевую машину вместе с каким-то сторонним софтом и не по условиям лицензии не может свободно перераспространяться третьими лицами, тебе как автору программы, испольщующей этот компонент, придётся просто потребовать, чтобы владельцы целевых компьютеров купили и проинсталлировали у себя нужный софт.
В случае, когда автор компонента разрешает свободное перераспространение своего компонента другими разработчиками, нужно уточнять у автора, каким именно способом его компонент должен быть проинсталлирован на целевой машине. В большинстве случаев установка такого компонента на целевую машину сводится к копированию файлов на целевую машину и регистрации ActiveX-серверов. Но это просто наиболее часто встречаемый случай, а не общий случай и не правило. Нужно всякий раз уточнять индивидуально.
На конкретно взятом компьютере найти DLL-библиотеку по имени ActiveX-класса легко, это делается в два шага. Вот например, на моём:
- cdo_lib_actxdll_location.png (46.85 Кб) Просмотров: 1988
Но использовать эту информацию не в глобальном плане нельзя — после обеда может быть выйдет другая версия CDO, которая будет жить в другом файле, который будет лежать в другом месте. А завтра — третья.
Так что нужно рассматривать компонент как чёрный ящик, и для того, чтобы чёрный ящик оказался на чужой машине, где он потребуется нашей программе, его нужно там инсталлировать в соответствии с инструкцией к чёрному ящику. Инструкцию даёт производитель.
В случае CDO производитель — Microsoft.
Документацию нужно искать на сайте MSDN.
Раздел по CDO:
http://msdn.microsoft.com/en-us/library ... 10%29.aspxИнформация по установке CDO:
http://msdn.microsoft.com/en-us/library ... 10%29.aspxТам что-то говорится про Microsoft Exchange Server и Outlook. Вот видимо с ними компонент и появляется на компьютерах. Читай, разбирайся.