|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - помогите: как использовать COM-технологию? |
|
|
Разное - помогите: как использовать COM-технологию?
|
Пользователь Сообщения: 136 |
Профиль | Отправить PM | Цитировать Проблема состоит в том, что есть некое внешнее устройство, подключённое через USB, и есть библиотеки dll к нему (без заголовочных h-файлов!), причём в иструкции написано, что "Модули расширения являются COM объектами". Скажите, каким образом эти библиотеки можно подключить к своей программе?
|
|
Отправлено: 20:29, 28-11-2007 |
Старожил Сообщения: 435
|
Профиль | Отправить PM | Цитировать Можно поробовать загрузить dll и вызвать из программы функции какие эти dll предоставляют
|
------- Отправлено: 13:40, 29-11-2007 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 136
|
Профиль | Отправить PM | Цитировать На сколько я понял, эти COM-компоненты нужно регистрировать в системе (т.е. в реестре), а потом как-то обращаться к ним из своей программы. Только пока не понял, каким образом эти библиотеки dll можно зарегистрировать в системе... Но основная проблема, видимо, заключается в том, как узнать название объекта (класса), которые нужно подключать (в частности из matlab).
|
Отправлено: 16:11, 29-11-2007 | #3 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать у меня тоже похожие проблемы...
регистрировать длл библиотеки легко если они поддерживают регистрацию, насколько я понимаю не все поддерживают ее... regsvr32 "C:\full path\somename.dll" |
Отправлено: 16:00, 01-12-2007 | #4 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать Цитата BlackEric:
|
||
Отправлено: 18:13, 01-12-2007 | #5 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать Admiral, ВБ6 умеет произвольные функции из dll импортировать. Есть понятие конвенции вызова - каким образом надо вызывать функции (как класть параметры на стек и куда передавать управление). Для функций, экспортируемых их длл принята так называемая stdcall конвенция. Из любого языка, который эту конвенцию поддерживает (в том числе и вб) можно вызвать функцию на другом языке, поддерживающем её.
zl3p, Зарегистрируйте эти dll в системе и посмотрите, нет ли в них typelib'ов внутри. С помощью тулзы вроде этой: http://www.aivosto.com/activexplorer.html (по-моему, в VS и VB есть стандартный инструмент для этого) Давно, не дружил с COM, так что не помню, чем это лучше делать. Если typelib есть (а в любом б-м. нормальном компоненте они будут), то никакие h файлы не нужны - idl можно сгенерить по данным typelib. А если компонент ещё и IDispatch поддерживает, то можно будет легко вызывать любые методы вообще ничего не генеря. Наверняка matlab всё через IDispatch в любом случае вызывает. |
------- Отправлено: 02:01, 02-12-2007 | #6 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать Я слышал про stdcall но в контексте написания ДЛЛ в Делфи, что б не возникало проблем у разработчиков С/С++.
Цитата ivank:
А подключать ДЛЛ в ВБ 6 вижу смысл исключительно в тех случаях, когда базовыми возможностями решить задачу не возможно, а большая часть проекта уже есть. Для таких целей выгоднее использовать ОСХ или ДЛЛ? Ведь ДЛЛ предназначалась для того что уменьшить использование ресурсов программами и использовать общие функции в одних ДЛЛ. |
|
Отправлено: 02:55, 02-12-2007 | #7 |
Старожил Сообщения: 435
|
Профиль | Отправить PM | Цитировать Цитата Admiral:
Цитата Admiral:
Т.е. просто удобно вынести в dll код который написан один раз и дальше будет использоваться ноднократно: алгоритмы шифрования, расчета контрольных сумм и т.д. |
||
------- Отправлено: 13:25, 02-12-2007 | #8 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Admiral:
Цитата Admiral:
|
||
------- Отправлено: 14:33, 02-12-2007 | #9 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать Цитата ivank:
Например кинул Syper.OCX и когда в коде пишеш syper ставиш точку тебе уже функцыи и процедуры с подсказками. Обратная сторона в том что избыток ресурсов и были случаи у некоторых пользователей выскакивало сообщение при загрузки проги что Для ДЛЛ же надо прописать каждую по особому либо Declare Function либо Declare Sub, далее какую именно функцию, какие переменные... Поиск нужных функций через WinApi (Microsoft Visual Studio\COMMON\Tools\Winapi). Сложно по началу, но используются рационально ресурсы, основные ДЛЛ всегда с ОС, в регистрации не нуждаются. И не только WinApi можно использовать, но и любую ДЛЛ главное, что б была Цитата ivank:
|
||
Последний раз редактировалось Admiral, 03-12-2007 в 02:43. Отправлено: 02:32, 03-12-2007 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|