Форум: "WinAPI";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
ВнизНЕ МОГУ СОЗДАТЬ COM-ОБЬЕКТ ЧЕРЕЗ CREATECOMOBJECT Найти похожие ветки
← →
STAINER (2003-05-02 01:42) [0]Привет Знатоки!
Есть вопрос!
Мне нужно создать COM-ОБЬЕКТ:
//BUTTON_CLICK
var
A:ISHELLBROWSER;
BEGIN
A:=CreateComObject ( CLSID ИНТЕРФЕЙСА ) AS ISHELLBROWSER;
НО В МОДУЛЕ SHLOBJ НЕТ CLSID_SHELLBROWSER А ЕСТЬ IID_ISHELLBROWSER
в документации к CreateComObject сказано что ей нужно передать именно CLSID ИНТЕРФЕЙСА, а не IID_, ПОЭТОМУ ПРИ ЗАПУСКЕ КОМПИЛЯТОР ВЫДАЁТ ОШИБКУ: КЛАСС НЕ ЗАРЕГИСТРИРОВАН!!
ЧТО ДЕЛАТЬ?????????????
СПАСИБО
← →
nikkie (2003-05-02 11:48) [1]Очевидно ты не очень четко представляешь разницу между Class ID и Interface ID. Интерфейс аналогичен абстрактному классу. То есть он описывает набор методов, но никак их не реализует. Как нельзя создать экземпляр абстрактного класса, так нельзя создать экземпляр интерфейса. Конкретный интерфейс может быть реализован многими коклассами, и наоборот - один кокласс часто реализует много интерфейсов. Кокласс идентифицируется через CLSID, его-то и ждет CreateComObject.
>ЧТО ДЕЛАТЬ?????????????
1. не кричать
2. подумать самому, учитывая то, что я написал + почитав в MSDN про IShellBrowser
3. объяснить что именно ты пытаешься сделать
← →
STAINER (2003-05-02 15:59) [2]Привет nikkie!
Ты абсолютно прав! Я не просто не представляю разницу между Class ID и Interface ID, а наверное даже не понимаю.
Вроде бы документации выше крыши. Нов том то и дело что, мне так кажется рассматриваются одни и те же примеры – создание ярлыков и Iactivedesktop, где есть clsid и выглядит это всё следующим образом:
ActiveDesktop:IActiveDesktop;
Begin
ActiveDesktop:=CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
А дальше уже можно пользоваться методами IactiveDesktop (setwallpaper,getwallpaper……)
Тут мне всё понятно CLSID берётся из shlobj и находится в реестре HKEY_CLASSES_ROOT\ CLSID
А что делять с Ishellbrowser или подобными интер-сами делать не знаю (толи нето читал, толи не там листал?)
А пытаюсь я сделать следующее:
Мне нужно добраться до метода (функции) IshellBrowser :: SetToolbarItems
(наверное вы уже поняли зачем мне эта функция)
Если вы знаете как мне про инить ISHELLBROWSER НУ ИЛИ ДРУГОЙ ИНТЕРФЕЙС ( ДЛЯ ПРИМЕРА : IOLEWINDOW ИЛИ ЕЩЁ ЧТО-НИБУДЬ)
Буду вам признателен.!
← →
nikkie (2003-05-02 22:21) [3]>А что делять с Ishellbrowser или подобными интер-сами делать не знаю (толи нето читал, толи не там листал?)
Читаем MSDN:
IShellBrowser
When to Use
When implementing a namespace extension use the IShellBrowser implementation that is passed to IShellView::CreateViewWindow to communicate with Windows Explorer.
По-русски: когда ты будешь реализовывать namespace extension, тебе передадут IShellBrowser. Иных способов использования этого интерфейса документация не предполагает.
Мне нужно добраться до метода (функции) IshellBrowser :: SetToolbarItems
(наверное вы уже поняли зачем мне эта функция)
Извини, я не понял зачем... Ты описываешь метод решения, как ты его себе представляешь. Но этот метод никогда и не заработает. Опиши саму задачу - тогда тебе могут подсказать решение.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c