Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 232

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 226 227 228 229 230 231 < 232 > 233 234 235 236 237 238 .. 320 >> Следующая

дао 16M)CWW-IOo-« і A-3t5 Iii
Implemented Categories ¦ - <WC«D5-24M. [ ICF-A30B-[• • InprocServer32[<noneme>]- D
i- -, _ „Г нПТГтк.-.ч
<i т ......
1
- D
Ready
Рис. 12.5. Наш СОМ-сервер в Oil-COM Viewer
Создаем простой клиент СОМ в Visual Basic 6.0 575
Чтобы просмотреть код IDL, щелкнем правой кнопкой мыши для нашего СОМ -сервера и в контекстом меню выберем View Type Information (Просмотр информации типов). Среди прочего кода IDLможно найти следующие строки, относящиеся к интерфейсу по умолчанию ([default]):
[ odl. uuid(DDA5B80E-BDM-45DF-B8FF-B6BFFFBCD9E6). version(I.O), hidden, dual, nonextensible. Oleautomation ] Interface _CoCalс : IDispatch
{
[id(0x6QQ300aQ)]
KIvESULT Add([.in] short x. [in] short y. [out. ret val] short * ):
};
[uuid(D101660C-8B09-4C40-961A-36512IC43AF1). version!1.0)] coclass Cocalc
{
[default] interface _CoCalc;
}:
Как мы могли убедиться, Visual Basic всегда определяет пользовательский терфейс как [ dual ]. В результате кнашему соклассу можно будет обращаться для работы со скриптами через интерфейс IDispatch с помощью самых разных язы ков.
Простой СОМ-сервер создан. Настало время заняться клиентом для этого СОМ-сервера. Вначале мы создадим его в том же самом Visual Basic 6.0.
Создаем простой клиент СОМ в Visual Basic 6.0
Откроем Visual Basic 6.0 и выберем на этот раз шаблон Standard EXE. После этого при помощи меню Project (Проект) > References (Ссылки) добавим в наш шаблон ссылку на Painfully SimpleVBCOMServer (рис. 12.6).
References і i.....t.V\,ff
Available References:
.. IЙ Visual Basic For Applications IШ Visual Basic runtime objects
runtime objects and procedures
Я Visual Basic objects and procedures S CXE Automation
•/ ^тііутаДІ-НіІі'іИГГИ^ИИе^И
? IAS Helper COMCSmponent L ¦OTyp* Library Q IAS RADIUS Protocol I .0 Type Library iG Account
'3 Active DS IIS Extension Dl
ID ActK/e DS IIS Namespace Provider ?Active DS Type Library ID Actt/e Setup Control Library 3Act!v*Movle control type library Л ActiveX DLL to nerform Mlaratipn of MS ReoositoN
A_;_:_I
Priority
OK 1
Cancel I

Browse... j

tJefn 1
¦ PaWJy^lri^rtCOMSarvw:--¦-—
Location; DiPocuwieeiLs and Sottif^aLrrjeteen'iDesWtip'iCSlMrpScM^li Language; Standard
Рис. 12.6. Добавляем ссылку на наш СОМ-сервер
576 Глава 12 Взаимодействие с унаследованным программным кодом
Добавление ссылки на сборку
Главная задача созданной нами сборки .NET - обеспечить передачу запросов из модулей .NET традиционному СОМ-серверу. Для того чтобы в этом удостовериться, мы создадим СОМ-клиент на С# (он будет называться CSharpCalcClient). Первое, что нам нужно будет сделать — создать новое консольное приложение С# и присвоить ему имя. Затем, конечно же, нам потребуется добавить ссылку на созданную нами при помощи tlbimp.exe сборку. Добавление ссылки производится через диалоговое окно Add Reference (Добавить ссылку). После добавления ссылки сборка SimpleAssembly должна появиться в окне Solution Explorer (рис. 12.9).
Клиент у нас будет похож на сервер своей предельной простотой. В нем будут предусмотрены два текстовых поля (объекта TextBox), единственная кнопка (объект Button) и две текстовые надписи рядом с текстовыми полями. Выглядеть все это может примерно так, как показано на рис. 12.7.
Единственный код, который нам вообще понадобится добавить на форму - это код для события кнопки Cl ick. Мы создадим экземпляр сокласса и перешлем ему значения, которые будут браться, естественно, из текстовых полей. Для простоты мы будем отображать возвращаемый результат при помощи MessageBox:
Private SubbtnAdd_Click() Dim с As New CoCaIc rosgBox c.AddttxtNumM. txttaib2)
Sub
Можно сказать, что мы создали гармонично дополняющие друг друга COM-сервер и СОМ-клиент. Следующая наша задача - создать клиент С#, который будет обращаться к тому же СОМ-серверу.
Код приложения Painfu]]ySimpleVBCOMClient можно найти в подкаталоге Chapter 12.
Импорт библиотеки типов
Первый шаг, который мы должны сделать, прежде чем обращаться к СОМ-серверу из .NET, - создать промежуточный класс, который будет содержать в себе всю необходимую информацию для передачи запроса СОМ-серверу (об этом мы говорили, когда обсуждали RCW). Создание такого промежуточного класса производится при помощи утилиты tlbimp.exe (type library importer — импортер библиотеки типов). Вначале перейдем в командной строке в тот каталог, в котором находится двоичный модуль СОМ-сервера, а затем выполним команду следующего вида;
tlbimp Pa1nful1yS1mpleVBC0MServer.dll /out:SimpleAssemblу.dll
Давайте откроем только что созданную нами сборку при помощи ILDasm.эхе (рис. 12,8). Обратите внимание, что всем элементам СОМ-сервера автоматически подобраны эквиваленты .NET.
Client - в..»»! urii-, і* u.'-rO
D
¦*. і'-іиіі!^^г Client
• Number 1
? :
a
Добавление ссылки на сборку 577
Add
Рис. 12.7. Интерфейс нашего СОМ-клиен^а
/ Dr\CSharpBook\Lab5\Chapter 12 Painfi
ESe View odp
KU
ф D:lCSharpBoorALabs\Chapter 11lPainfullySimpleVBCOM,
FE S Т
H B CoCaIe
1 > .class publicautoanslImport ... > implements SlmpleAssembly._CoCalc - > .custom Instancevold [mscoriib]System.Runtir
Предыдущая << 1 .. 226 227 228 229 230 231 < 232 > 233 234 235 236 237 238 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100