Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Shkval Гость
|
Добавлено: Вс Июн 27 2004 00:19 Заголовок сообщения: Элементы COM-библиотеки |
|
|
Всем доброго времени суток.
Тем, кто занимался COM-объектами мой вопрос, я думаю, покажется легким. Я пишу небольшой VBScript и проблема состоит в том как получить значение константы, обьявленной внутри COM-библиотеки. Чтобы создать объект какого-либо COM-класса используется команда вида:
Dim oServer As SQLDMO.SQLServer
Set oServer = CreateObject("SQLDMO.SQLServer")
Но для вызова ряда функций надо использовать в качестве параметров константы, относящиеся к этой библиотеке. Например в библиотеке SQLDMO есть такой элемент перечисление:
Enum SQLDMO_PERFMON_TYPE, а в его состав входят несколько констант:
Const SQLDMOPerfmon_Continuous = 0
Const SQLDMOPerfmon_MaxSet = 1
Const SQLDMOPerfmon_None = 1000 (&H3E8) и т.д.
Создать такую константу с помощью команды CreateObject (чтобы потом получить ее значение) не удается, т.к. это не класс, а Enum.
Возможно, кто-нибудь сталкивался с такой же проблемой. Напишите, пожалуйста, какой-нибудь примерчик кода, как обратиться к такой константе.
Заранее Спасибо. |
|
Вернуться к началу |
|
 |
wildwind
Зарегистрирован: 03.02.2004 Сообщения: 268 Откуда: Москва
|
Добавлено: Вс Июн 27 2004 16:32 Заголовок сообщения: |
|
|
Вообще Enum'ы, объявленные в COM-библиотеке, не видны automation-клиентам, а значит и из VBScript. На этот случай Microsoft поставляет include-файлы с объявлениями всех констант. Например для ADO и OLEDB эти файлы можно найти в C:\Program Files\Common Files\System\ado и ...\Ole DB. Попробуй найти такой файл для SQLDMO где-нибудь в дистрибутиве SQL Server'а.
Если не найдешь, то просто объяви их в своем скрипте и все. Правда есть (весьма небольшая) вероятность, что в будущих версиях библиотек значения констант изменятся. |
|
Вернуться к началу |
|
 |
Shkval Гость
|
Добавлено: Пн Июн 28 2004 16:50 Заголовок сообщения: |
|
|
>> Правда есть (весьма небольшая) вероятность, что в будущих версиях библиотек значения констант изменятся.
Да, мне именно это и не нравится, потому что иначе я мог просто взять значения этих констант (я их знаю и писал в первом сообщении).
>> Вообще Enum'ы, объявленные в COM-библиотеке, не видны automation-клиентам, а значит и из VBScript. На этот случай Microsoft поставляет include-файлы с объявлениями всех констант.
Дело в том, что если использовать не VBScript, а VBA или просто VB, то значения этих констант видны при подключении соответствующей библиотеки - Microsoft SQLDMO (оно и понятно, ведь эти константы обьявлены для того, чтобы их можно было использовать). Поэтому возникает такой вопрос - можно ли (вообще в принципе) в VBScript подключить внешнюю библиотеку (например, в VBA я это делаю через меню Tools->References). Возможно, существует какая-нибудь команда по типу include <> или uses или import.
>> На этот случай Microsoft поставляет include-файлы с объявлениями всех констант. Например для ADO и OLEDB эти файлы можно найти в C:\Program Files\Common Files\System\ado и ...\Ole DB. Попробуй найти такой файл для SQLDMO где-нибудь в дистрибутиве SQL Server'а.
Поясните, пожалуйста, как можно использовать include-файлы в VisualBasic (если я правильно понимаю речь идет о *.h файлах для С++). Вопросы может глупые, но просто мне до этого момента не приходилось иметь дело с VisualBasic . |
|
Вернуться к началу |
|
 |
wildwind
Зарегистрирован: 03.02.2004 Сообщения: 268 Откуда: Москва
|
Добавлено: Пн Июн 28 2004 19:15 Заголовок сообщения: |
|
|
Цитата: | можно ли (вообще в принципе) в VBScript подключить внешнюю библиотеку |
Библиотеку подключить можно, но константы надо объявлять. Я ведь уже сказал.
Цитата: | Поясните, пожалуйста, как можно использовать include-файлы в VisualBasic (если я правильно понимаю речь идет о *.h файлах для С++). Вопросы может глупые, но просто мне до этого момента не приходилось иметь дело с VisualBasic . |
Действительно, если бы ты залез в эти каталоги и посмотрел на файлы, вопросов бы не было. Речь идет об .inc файлах. |
|
Вернуться к началу |
|
 |
|