Страница: 1 | 2 | 3 |
Вопрос: COM компонента под Office
Добавлено: 04.07.05 16:43
Автор вопроса: Dogmatic
Ответы
Всего ответов: 37
Номер ответа: 16
Автор ответа:
Dogmatic
Вопросов: 1
Ответов: 21
Профиль | | #16
Добавлено: 06.07.05 12:16
Так, WaX, закладку я не нашел, чичас пытаюсь сделать с помощью sn. Регистрацию для СОМ-а нашел
Номер ответа: 17
Автор ответа:
Dogmatic
Вопросов: 1
Ответов: 21
Профиль | | #17
Добавлено: 06.07.05 14:09
Я забил текст, создав Class Library для VB. Далее зашел в Tools->External Tools, добавил новый тул:
Add->
Title :sn,
Commsnd: ...\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin\sn.exe
Arguments: -k keyPair.snk
Initial directory: $(ProjectDir)
Далее запустил: Tools->sn
Далее Solution Explorer->WaX(имя проекта)->Properties->Configuration Properties->Build->Register for COM Interop, галку поставил.
Далее Build->Build Solution(Build WaX)
В результате созданы следующие файлы:
WaX//
bin/
obj/
AssemblyInfo.vb
keyPair.snk
WaX.sln
WaX.suo(hidden)
WaX.vb
Wax.vbproj
Wax.vbproj.user
/bin//
WaX.dll
WaX.pdb
WaX.tlb
/obj//
Debug/
//Debug//
temp/
TempPE/
WaX.dll
WaX.pdb
WaX.tlb
(темпы естесственно пустые)
Ничего из этого не хочет кушаться как ActiveX - компонент. WaX, не мог бы ты еще дополнить немного, как регистрировать или, если я неправильно что-то сделал, объяснить как правильно...
Номер ответа: 18
Автор ответа:
Dogmatic
Вопросов: 1
Ответов: 21
Профиль | | #18
Добавлено: 06.07.05 14:11
Как я понял, за счет галки Register for COM Interop, создается WaX.tlb.
Ну а засчет sn, понятно keyPair.snk.
Так вот WaX.tlb, что это?
Номер ответа: 19
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #19
Добавлено: 06.07.05 14:39
Это то, что надо подключить из VB для того, чтобы использовать dll...
Номер ответа: 20
Автор ответа:
⊗WaX⊗
Вопросов: 26
Ответов: 325
Web-сайт:
Профиль | | #20
Добавлено: 06.07.05 14:42
Ну ладно забей на тот вариант писаол по памяти и было такое окошко в VS.NEN а в 2003 чего то я и сам не нашел.
Используя sn ты только создал ключ затем сборку нужно еще подписать - al.exe.
Но как всегда есть способ проще для VB.NET
Public Class ComClass1
' Use the Region directive to define a section named COM Guids.
#Region "COM GUIDs"
' These GUIDs provide the COM identity for this class
' and its COM interfaces. You can generate
' these guids using guidgen.exe
Public Const ClassId As String = "7666AC25-855F-4534-BC55-27BF09D49D46"
Public Const InterfaceId As String = "54388137-8A76-491e-AA3A-853E23AC1217"
Public Const EventsId As String = "EA329A13-16A0-478d-B41F-47583A761FF2"
#End Region
Public Sub New()
MyBase.New()
End Sub
Function AddNumbers(ByVal X As Integer, ByVal Y As Integer)
AddNumbers = X + Y
End Function
End Class
Просто вставляешбь код в новый проект библиотеки меняешь имя проекта и файла.
Ставишь галочку Register for COM ...
Все работет проверил только что
Удачи
cya WaX
Номер ответа: 21
Автор ответа:
⊗WaX⊗
Вопросов: 26
Ответов: 325
Web-сайт:
Профиль | | #21
Добавлено: 06.07.05 14:43
а tlb это метаданные для подключения dll-ки
Смотри
tlbimp.exe и tlbexp.exe
и Дядя Гугл как всегда поможет
Номер ответа: 22
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #22
Добавлено: 06.07.05 14:45
tlb - ни в коем случае не метаданные, а токмо COM type library...
Номер ответа: 23
Автор ответа:
⊗WaX⊗
Вопросов: 26
Ответов: 325
Web-сайт:
Профиль | | #23
Добавлено: 06.07.05 14:45
Если будешь использовать C# столкнешься с небольшим гимором, но тоже можно сделать.
Пиши если что.
Номер ответа: 24
Автор ответа:
⊗WaX⊗
Вопросов: 26
Ответов: 325
Web-сайт:
Профиль | | #24
Добавлено: 06.07.05 14:49
Читаем MSDN
Программа импорта библиотек типов выполняет преобразование определения типов, найденные в библиотеке типов COM, в эквивалентные определения сборки общеязыковой среды выполнения. На выходе Tlbimp.exe — двоичный файл (сборка), содержащий метаданныесреды выполнения для типов, определенных в исходной библиотеке типов. Проверить этот файл можно с помощью таких программ как Ildasm.exe.
Номер ответа: 25
Автор ответа:
Dogmatic
Вопросов: 1
Ответов: 21
Профиль | | #25
Добавлено: 06.07.05 15:01
Гым, сделал, все равно не идет. Как я это в Access вставляю?
Номер ответа: 26
Автор ответа:
Dogmatic
Вопросов: 1
Ответов: 21
Профиль | | #26
Добавлено: 06.07.05 15:08
Кстати когда юзаю Tlbexp.exe выдает еггог:
Tlbexp.exe WaX2.tlb
TlbExp error: The format of the file 'WaX2.tlb' is invalid
А если Tlbimp.exe WaX2.tlb
TlbImp error: System.Runtime.InteropServices.COMException - Type library WaX2 was exported from a CLR assembly and can not be re-imported ac a CLR assembly
МСДН почитал, одна ошибка вроде понятна, а вот другая...
Кстати 7666AC25-855F-4534-BC55-27BF09D49D46 и другие 2, это из .sln надо брать? может у меня они другие?
Номер ответа: 27
Автор ответа:
⊗WaX⊗
Вопросов: 26
Ответов: 325
Web-сайт:
Профиль | | #27
Добавлено: 06.07.05 16:20
Ничего кроме написанного в 20 посте делать не надо.
Пример 100% рабочий.
1. Создаешь новый проект Class library
2. Открываешь Class1.vb все оттуда стираешь
3. Тупо копируешь весь код туда
4. Правой кнопкой кликаешь на Class1.vb в Solution Explorer'e меняешь filename на ComClass1
5. Кликаешь правой кнопкой на имени проекта выбираешь properties ставишь Assembly тьфу ComClass1
6. В этом же окне в Configuration properies->Build
Ставишь галку Register for Com Interop
7. Жмешь ОК
8. Давишь Build
9. Открываешь Acces или Word или Excel или Corel или Visio ...
10. Давишь Alt-F11
11. В меню ищешь Tools-References
12. В списке ищешь ComClass1
13. Ставишь на нем галку
14. Открываешь Object Browser
15. Ищешь там свой класс и проверяешь доступные методы.
16. Если не получается GOTO 1
Ты кем работешь то?
Номер ответа: 28
Автор ответа:
Dogmatic
Вопросов: 1
Ответов: 21
Профиль | | #28
Добавлено: 06.07.05 16:21
Если надоело объяснять, то может книжку какую-нить посоветуете. А можно и то и другое(объяснения, книжка)
Номер ответа: 29
Автор ответа:
Dogmatic
Вопросов: 1
Ответов: 21
Профиль | | #29
Добавлено: 06.07.05 16:27
Гыгы, я пока штудент, перешел на 4-ый курс. У меня типа практика, а так как по знакомству, то сразу на нормальную работу пристроили. Вот теперь сижу с гордым званием девелопера... Дали задание, кстати даже понемногу объяснили зачем именно так, начинаю понимать, что резон есть. В 2003-ей студии не работал, на VB тоже, в основном до этого на VS 6 C++, иногда на Delphi, сам код задания, не проблема, объект, который будет рисовать то, что мне надо, напишу. А вот с этой компонентой замучилси.
Ладно, начну пробывать... Пасиб, что помогаешь.
Номер ответа: 30
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #30
Добавлено: 06.07.05 16:38
Программа импорта библиотек типов выполняет преобразование определения типов, найденные в библиотеке типов COM, в эквивалентные определения сборки общеязыковой среды выполнения. На выходе Tlbimp.exe — двоичный файл (сборка), содержащий метаданныесреды выполнения для типов, определенных в исходной библиотеке типов. Проверить этот файл можно с помощью таких программ как Ildasm.exe.
Угу. Правильно.
Теперь внимательно читаем приведённый текст.
Есть библиотека типов COM. Содержит информацию для маршалера COM. Она окучивается утилитой Tlbimp.exe. Tlbimp.exe выдаёт библиотеку с метаданными.
Расширение у это библиотеки dll.