| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > ActiveX |
| Автор: Лена 7.9.2006, 12:02 |
| Как осуществить следующее: При нажатии на кнопку, надо вывести в список все зарегистрированные на компьютере ActiveX. После выбора из списка выбранный ActiveX должен загружаться на форму и в соседних списках должны быть автоматически загружены его свойства и методы. Выбрав метод из списка и задав параметры для него пользователь при желании может выполнит его. Если можно расскажите по подробней шаги реализации такой программы. Спасибо. |
| Автор: pandrew 7.9.2006, 13:24 |
| Вообще-то вся желаемая тобой функциональность уже реализована в MS SDK. Список формируется на основе анализа реестра (HKEY_CLASSES_ROOT), откуда можно вытащить CLSID. Далее видимо надо будет загружать OCX в контейнер (TOleContainer) и вытаскивать cписок методов. |
| Автор: Лена 7.9.2006, 13:49 |
| >Вообще-то вся желаемая тобой функциональность уже реализована в MS SDK. Что-то ни могу найти. Подскажите где это описано в MS SDK? |
| Автор: pandrew 7.9.2006, 15:36 |
| К сожалению точно не помню, а найти быстро не получается. Называлась утилита приблизительно OleTestContainer входила в полную MS VS6 |
| Автор: Лена 7.9.2006, 15:50 |
| >входила в полную MS VS6 К сожалению мне это надо реализовать на Builder. Я посмотрела в реестре раздел CLSID, но как вытащить названия не знаю. Вот в Builder если нажать меню Project далее Import Type Library, то получаем окно со списком ActiveX (см.рисунок). Как построить такой список? |
| Автор: pandrew 7.9.2006, 16:21 | ||||
Это что учебное задание? Но, я думаю, непосредственно в коде построения списка, разница между VS и Bulder будет малозаметна.
А если, зная CLSID сгонять на ветку HCR\Typelib? Можешь еще убедиться, что при выборе пунктов Project/Import type library и Component/Import ActiveX строятся разные списки. Я точно знаю, что списки строятся через просмотр реестра HCR\CLSID с анализом ветвей InprocServer32 и др.. Ищи инфу по регистрации COM в системе (по Builder и Delhi книги Елмановой, Калверта, Холингвэрта) и/или книжки по реестру Windows. Возможно в ОС существует готовый ActiveX для построения списков и работы с интерфейсами. Больно уж похожи списки и диалоги для импорта в разных IDE. Попробуй сходить на форумы VS там больше народу. Вот вроде что-то похожее на тест-контейнер, но современное http://msdn2.microsoft.com/en-us/library/ms241446.aspx |
| Автор: Лена 7.9.2006, 16:34 |
| >Я точно знаю, что списки строятся через просмотр реестра HCR\CLSID с анализом ветвей InprocServer32 и др Я думаю надо анализировать в CLSID папку ProgID. Вот как вытащить название пока не разобралась. > Калверта, Эта книга у меня есть > Возможно в ОС существует готовый ActiveX для построения списков и работы с интерфейсами Мечта бедной Лены! > Попробуй сходить на форумы VS там больше народу. Нашла код для VC но на Builder переделать не получилось: http://www.codeguru.com/cpp/com-tech/activex/controls/article.php/c5527/ Спасибо за ссылку, буду пытаться разобраться. |
| Автор: pandrew 7.9.2006, 17:06 | ||||||
По-моему это то что тебе надо, ну а переделывать там вообще нечего. Добавь себе в проект
и замени последние строки
на
где m_list1 - TListBox на твоей форме |
| Автор: Лена 7.9.2006, 17:23 |
| ПОЛУЧИЛОСЬ, большое спасибо! Я до этого добовляла не тот инклуд: #include <shlobj.h> для ф-ции CoInitialize Жаль местами код не понятный. Теперь еще более сложная задача предстоит загрузить выбранный ActiveX в контейнер. |