Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 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-сайт: sapfir.cift.ru
 Профиль | | #20
Добавлено: 06.07.05 14:42
Ну ладно забей на тот вариант писаол по памяти и было такое окошко в VS.NEN а в 2003 чего то я и сам не нашел.
Используя sn ты только создал ключ затем сборку нужно еще подписать - al.exe.
Но как всегда есть способ проще для VB.NET
<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
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-сайт: sapfir.cift.ru
 Профиль | | #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-сайт: sapfir.cift.ru
 Профиль | | #23
Добавлено: 06.07.05 14:45
Если будешь использовать C# столкнешься с небольшим гимором, но тоже можно сделать.
Пиши если что.

Ответить

Номер ответа: 24
Автор ответа:
 ⊗WaX⊗



Вопросов: 26
Ответов: 325
 Web-сайт: sapfir.cift.ru
 Профиль | | #24
Добавлено: 06.07.05 14:49
Читаем MSDN
Программа экспорта библиотек типов (Tlbexp.exe)
Программа импорта библиотек типов выполняет преобразование определения типов, найденные в библиотеке типов 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-сайт: sapfir.cift.ru
 Профиль | | #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
Читаем MSDN

Программа экспорта библиотек типов (Tlbexp.exe)
Программа импорта библиотек типов выполняет преобразование определения типов, найденные в библиотеке типов COM, в эквивалентные определения сборки общеязыковой среды выполнения. На выходе Tlbimp.exe — двоичный файл (сборка), содержащий метаданныесреды выполнения для типов, определенных в исходной библиотеке типов. Проверить этот файл можно с помощью таких программ как Ildasm.exe.


Угу. Правильно.
Теперь внимательно читаем приведённый текст.

Есть библиотека типов COM. Содержит информацию для маршалера COM. Она окучивается утилитой Tlbimp.exe. Tlbimp.exe выдаёт библиотеку с метаданными.
Расширение у это библиотеки dll.

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам