SH>Вопрос №1: SH>При перечислении всех категорий через IEnumCATEGORYINFO перечисляются несколько категорий (штук десять), после чего очережой вызов Next заканчивается ошибкой E_OUTOFMEMORY. Если попытаться получить все скопом, в массив, то результат тот же, только сразу. SH>Внимательное изучение реестра дало следующее (я чуть не обалдел): SH>
SH>OleView, не сомневаясь в своей правоте, отображает всё (если встать на Grouped by Component Categories), видимо черпает информацию прямо из реестра, без ICatInformation... Но там, где показывает компоненты в категориях он тоже не видит ни одной категории после сбойной. SH>Всё это в Win 2000 Pro. SH>Собственно, вопрос: насколько это нормально и что с этим делать? Да почистить реестр и все. Какая-то софтина нагадила при регистрации своих компонентов. (Задача максимум: выяснить, какая софтина, и никогда больше ничего от той же фирмы не запускать [если, конечно, не окажется, что это Microsoft]). SH>Вопрос №2: SH>Некоторые категории имеют несколько строчек с описением. Например SH>
SH>Мне при перечислении возвращается тольк "Insertable", а OleView показывает "Embeddable Objects". Почему такая разница, можно ли получить все варианты описания? И как для своей категории задать несколько вариантов? Число слева — это locale identifier. Подразумевается, что написано одно и то же, но на разных языках. 409 — English (US), 800 — LOCALE_SYSTEM_DEFAULT. При вызове EnumCategories первым параметром указывается LCID, в которой хочется получать описания. Соответственно, при регистрации нужно указать соответствующее значение в поле lcid структуры CATEGORYINFO. Если хочется иметь несколько описаний на разных языках, нужно зарегистрировать категорию несколько раз с разными значениями lcid. |