Как вызвать com + компонент? - PullRequest
3 голосов
/ 02 июня 2009

Я занимаюсь археологией, занимаюсь COM +

Мне удалось завести простой COM dll в качестве компонента COM +, пока все хорошо.

Итак, у меня есть этот ком + компонент 'foobar' с его интерфейсом и методом, который я хотел бы вызвать.

Тогда мой вопрос прост: как мне позвонить этому компоненту?

Любой ответ .NET или VB6 принимается (я должен проверить, что компонент в порядке, не заботится о клиенте)

Спасибо

Редактировать (06/03/09): Ну, я в замешательстве. для правильной работы моему компоненту COM + необходимо зарегистрировать dll. Почему бы и нет? Но тогда как быть уверенным, что я звоню COM +, а не COM?

Ответы [ 4 ]

2 голосов
/ 02 июня 2009

Простейший фрагмент кода VB.NET:

Dim myCom As Object
myCom = CreateObject("MyCom.ProgId")
myCom.Method(parms)

Вам необходимо заменить «MyCom.ProgId» на фактический ProgId вашего компонента - вы можете получить его на вкладке «Общие» свойств компонента в инструменте администратора служб компонентов (звучит так, как будто вы уже поняли этого)

myCom.Method (parms)

- это просто заполнитель для любого метода, который вы хотите вызвать, с параметрами, которые принимает метод.

Вот ссылка на некоторые примеры синтаксиса VB.NET:

http://msdn.microsoft.com/library/de...eateObject.asp

http://www.samspublishing.com/articl...le.asp?p=25857

http://msdn.microsoft.com/library/en...asp?frame=true

1 голос
/ 03 июня 2009

Если вы хотите использовать COM + для RMI, используйте это

Dim o As Object
Set o = CreateObject("Lib.Class", "MYSERVER")

где MYSERVER - имя компьютера, на котором создано приложение COM + и зарегистрирована ваша DLL. Впоследствии

o.YourMethod "someParam"

будет вызываться удаленно. Если вы используете только интерфейсы, совместимые с автоматизацией, COM + успешно создаст прокси для RMI. В противном случае вам нужно будет предоставить typelib на клиентском компьютере. Это может быть отдельный TLB или сама DLL.

1 голос
/ 03 июня 2009

Если все, что вам нужно, это проверить, реагирует ли компонент на вызов, тогда используйте быстрый VBScript вместо создания чего-либо в VB6 / VB.NET.

 Dim o : Set o = CreateObject("Lib.Class")
 o.YourMethod "someParam"

Посмотрите на ваше приложение COM + в Службах компонентов, чтобы убедиться, что запрошенный класс набирает обороты.

1 голос
/ 02 июня 2009

Код Адама в VB6 похож:

Dim myCom As Object
Set myCom = CreateObject("MyCom.ProgId")
myCom.Method(parms

Этот пример имеет позднюю привязку и несет с собой некоторое снижение производительности. Вы можете вызвать свой метод на ранней стадии, что позволит избежать штрафа. В VB6 или VB.NET просто добавьте COM + DLL к своим ссылкам, и вы можете вызвать объект следующим образом:

VB6

dim myCom as MyCom.ProgId
set myCom = new MyCom.ProgId
myCom.Method

VB.NET

dim myCom as new MyCom.ProgId
myCom.Method(...)
...