Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - помогите: как использовать COM-технологию?

Ответить
Настройки темы
Разное - помогите: как использовать COM-технологию?

Пользователь


Сообщения: 136
Благодарности: 0

Профиль | Отправить PM | Цитировать


Проблема состоит в том, что есть некое внешнее устройство, подключённое через USB, и есть библиотеки dll к нему (без заголовочных h-файлов!), причём в иструкции написано, что "Модули расширения являются COM объектами". Скажите, каким образом эти библиотеки можно подключить к своей программе?

Отправлено: 20:29, 28-11-2007

 

Старожил


Сообщения: 435
Благодарности: 63

Профиль | Отправить PM | Цитировать


Можно поробовать загрузить dll и вызвать из программы функции какие эти dll предоставляют

-------
black-eric.livejournal.com


Отправлено: 13:40, 29-11-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 136
Благодарности: 0

Профиль | Отправить PM | Цитировать


На сколько я понял, эти COM-компоненты нужно регистрировать в системе (т.е. в реестре), а потом как-то обращаться к ним из своей программы. Только пока не понял, каким образом эти библиотеки dll можно зарегистрировать в системе... Но основная проблема, видимо, заключается в том, как узнать название объекта (класса), которые нужно подключать (в частности из matlab).

Отправлено: 16:11, 29-11-2007 | #3


Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


у меня тоже похожие проблемы...

регистрировать длл библиотеки легко если они поддерживают регистрацию, насколько я понимаю не все поддерживают ее...

regsvr32 "C:\full path\somename.dll"

Отправлено: 16:00, 01-12-2007 | #4


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Цитата BlackEric:
и вызвать из программы функции какие эти dll предоставляют »
Как это работает? Ведь ДЛЛ обычно пишется на С/С++, а вызывать её можно например из Визуал Байзика, как ДЛЛ может обрабатывать вызовы этого языка?

Отправлено: 18:13, 01-12-2007 | #5


редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


Admiral, ВБ6 умеет произвольные функции из dll импортировать. Есть понятие конвенции вызова - каким образом надо вызывать функции (как класть параметры на стек и куда передавать управление). Для функций, экспортируемых их длл принята так называемая stdcall конвенция. Из любого языка, который эту конвенцию поддерживает (в том числе и вб) можно вызвать функцию на другом языке, поддерживающем её.

zl3p, Зарегистрируйте эти dll в системе и посмотрите, нет ли в них typelib'ов внутри. С помощью тулзы вроде этой: http://www.aivosto.com/activexplorer.html (по-моему, в VS и VB есть стандартный инструмент для этого) Давно, не дружил с COM, так что не помню, чем это лучше делать. Если typelib есть (а в любом б-м. нормальном компоненте они будут), то никакие h файлы не нужны - idl можно сгенерить по данным typelib. А если компонент ещё и IDispatch поддерживает, то можно будет легко вызывать любые методы вообще ничего не генеря. Наверняка matlab всё через IDispatch в любом случае вызывает.

-------
http://ivank.ru

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:01, 02-12-2007 | #6


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Я слышал про stdcall но в контексте написания ДЛЛ в Делфи, что б не возникало проблем у разработчиков С/С++.
Цитата ivank:
Давно, не дружил с COM »
Уходящая не выгодная технология?

А подключать ДЛЛ в ВБ 6 вижу смысл исключительно в тех случаях, когда базовыми возможностями решить задачу не возможно, а большая часть проекта уже есть. Для таких целей выгоднее использовать ОСХ или ДЛЛ? Ведь ДЛЛ предназначалась для того что уменьшить использование ресурсов программами и использовать общие функции в одних ДЛЛ.

Отправлено: 02:55, 02-12-2007 | #7


Старожил


Сообщения: 435
Благодарности: 63

Профиль | Отправить PM | Цитировать


Цитата Admiral:
Я слышал про stdcall но в контексте написания ДЛЛ в Делфи, что б не возникало проблем у разработчиков С/С++. »
Dll написанная на C как правило должна вызываться как stdcall из любого языка: С, Delphi, C++

Цитата Admiral:
Уходящая не выгодная технология?
А подключать ДЛЛ в ВБ 6 вижу смысл исключительно в тех случаях, когда базовыми возможностями решить задачу не возможно, а большая часть проекта уже есть. Для таких целей выгоднее использовать ОСХ или ДЛЛ? Ведь ДЛЛ предназначалась для того что уменьшить использование ресурсов программами и использовать общие функции в одних ДЛЛ. »
Никогда не описывал dll как COM объект. Просто не вижу смысла. Мне всегда хватало просто экспортировать требуемые функции.
Т.е. просто удобно вынести в dll код который написан один раз и дальше будет использоваться ноднократно: алгоритмы шифрования, расчета контрольных сумм и т.д.

-------
black-eric.livejournal.com

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:25, 02-12-2007 | #8


редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


Цитата Admiral:
Уходящая не выгодная технология? »
Нет, просто я под unix (freebsd, linux) сейчас только пишу, ибо серверный софт.

Цитата Admiral:
А подключать ДЛЛ в ВБ 6 вижу смысл исключительно в тех случаях, когда базовыми возможностями решить задачу не возможно, а большая часть проекта уже есть. Для таких целей выгоднее использовать ОСХ или ДЛЛ? Ведь ДЛЛ предназначалась для того что уменьшить использование ресурсов программами и использовать общие функции в одних ДЛЛ. »
OCX это такая очень спецальная длл (которая, фактически является activex компонентом -> COM-сервером). Но вообще-то, я думаю, из вб пофигу, что вызывать - главное чтоб удобно было и работало. Всё равно на vb сейчас никто не пишет приложений под распространение, только под себя (лично или в рамках компании).

-------
http://ivank.ru

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:33, 02-12-2007 | #9


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Цитата ivank:
главное чтоб удобно было и работало »
Тогда ОСХ удобнее - кинул на форму, а всё остальное тебе подскажет ОПП.
Например кинул Syper.OCX и когда в коде пишеш syper ставиш точку тебе уже функцыи и процедуры с подсказками. Обратная сторона в том что избыток ресурсов и были случаи у некоторых пользователей выскакивало сообщение при загрузки проги что
Код: Выделить весь код
Can not register Syper.OCX
Для ДЛЛ же надо прописать каждую по особому либо Declare Function либо Declare Sub, далее какую именно функцию, какие переменные... Поиск нужных функций через WinApi (Microsoft Visual Studio\COMMON\Tools\Winapi). Сложно по началу, но используются рационально ресурсы, основные ДЛЛ всегда с ОС, в регистрации не нуждаются.

И не только WinApi можно использовать, но и любую ДЛЛ главное, что б была
Цитата ivank:
так называемая stdcall конвенция. »
Вывод написание (на С/С++) ОСХ в случаи персонально спец функции своей проги, ДЛЛ если этими функциями заинтересуются ещё сторонние. Использование по мере доступности в одной из форм (ОСХ/ДЛЛ).

Последний раз редактировалось Admiral, 03-12-2007 в 02:43.


Отправлено: 02:32, 03-12-2007 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - помогите: как использовать COM-технологию?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Memtest-как использовать? Bren74 Хочу все знать 27 09-08-2013 13:33
[решено] Программы для обработки видео, использующие технологию CUDA SashaKl Видео и аудио: обработка и кодирование 1 01-07-2009 13:59
Прочее - 1,5 километра между серваками нужна 100 м\с подскажите технологию troin Сетевое оборудование 2 29-09-2008 09:42
Как использовать УЖЕ УСТАНОВЛЕННЫЕ Vikfil Автоматическая установка Windows 2000/XP/2003 1 08-10-2005 14:13
как использовать апач? libricon Общий по Linux 38 30-11-2004 19:49




 
Переход