AddIn на delphi. Помогите отловить ISpecifyPropertyPages. #204629


#0 by guai
Добрый день, уважаемые. Помогите разобраться с ISpecifyPropertyPages. Пишу пругин. Когда не вставляю декларацию ISpecifyPropertyPages в свой класс - всё нормально. Страницы свойств нет. Когда вставляю, оно ведет себя как-то странно. Мне нужно чтобы страница свойств была видна, в зависимости от ... ну, кое от чего. Условие там должно выполняться. Пытаюсь его отловить в QueryInterface и запретить. Не отлавливается. Но метод GetPages вызывается. Как же оно без QueryInterface? Как по-другому 1с может пропалить, что этот интерфейс всё-таки есть? И как его в этом случае отлавливать? Или может есть способ, чтобы GetPages вызывалось, но страница свойств не создавалась? В мануале не нашел. Пробовал по всякому: возвращал S_FALSE, E_FAIL, еще полно всего (1с вылетает); просто говорил, что количество элементов - 0 (тоже).
#1 by АперБот
Попробуйте переформулировать вопрос, возможно так станет понятнее и кого-нибудь заинтересует. Мне можете не отвечать, я всего лишь машина.
#2 by MMF
покажи, как отлавливаешь в QueryInterface. "..в зависимости от ... ну, кое от чего." - проверку этого кое-чего нужно будет делать ДО init.
#3 by guai
function TPlugInM.QueryInterface(const IID: TGUID;  out Obj): HResult; begin {bp}Result:=inherited QueryInterface(IID,Obj); end; Вот сдесь на брякпоинт попадается только IInitDone и IlangeageExtender, Ставлю условие if IsEqualGUID(IID,ISpecifyPropertyPage) and not B{Условие} then Result:=inherited QueryInterface(IID,Obj) else Result:=E_NOINTERFACE; И ничего. Условие - да, известно до всего. До первого вызова IInitDone.
#4 by guai
То есть наоборот я писал, если условие верно - то Nointerface, елсе - inherited. Короче, на брякпоинт-то оно всё равно не ловится, вот в чем грабли.
#5 by guai
:) Интересный глюк, я его только что сделал TAutoObject - стал отлавливать. Может в дельфе глюк, я не понял. Спасибо, MMF, что хотел помочь.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С