IThumbnailProvider и IInitializeWithItem - PullRequest
       28

IThumbnailProvider и IInitializeWithItem

2 голосов
/ 14 ноября 2009

Я пытаюсь разработать IThumbnailProvider для использования в Windows 7. Так как этот конкретный эскиз также будет зависеть от некоторых других файлов в том же каталоге, мне нужно использовать что-то отличное от IInitializeWithStream для пути к работе с этим существом IInitializeWithItem. (В качестве альтернативы я мог бы использовать IInitializeWithFile, но, видимо, это еще более осуждается.)

Что бы я ни делал, я не могу заставить его работать. У меня есть инструмент Microsoft FileTypeVerifier.exe, который дает зеленый свет при использовании IInitializeWithItem, но когда проводник вызывает его, кажется, что он только пробует IInitializeWithStream, когда-либо. (Это было проверено путем временной реализации указанного интерфейса и удаления Beep () в его Initialize()). Я забыл что-то настроить?

Вкратце: как мне заставить это работать?

1 Ответ

4 голосов
/ 15 ноября 2009

Хорошо, я наконец выяснил, в чем дело. Чтобы процитировать ссылку Создание эскизов на веб-сайте MSDN:

В некоторых случаях инициализация с помощью потоков невозможна. В тех случаях, когда ваш поставщик миниатюр не реализует IInitializeWithStream, он должен отказаться от запуска в изолированном процессе, где системный индексатор размещает его по умолчанию, когда происходит изменение в потоке. Чтобы отказаться от функции изоляции процесса, установите следующее значение реестра.

  • HKEY_CLASSES_ROOT

    • CLSID
    • {66742402-F9B9-11D1-A202-0000F81FEDEE}

      DisableProcessIsolation = 1

Я знал, что у меня кончился процесс, так как я читал в другом месте, что миниатюрные провайдеры ВСЕГДА заканчивались вне процесса. Но так как этот конкретный фрагмент кода используется почти на всех обработчиках расширения оболочки, я интерпретировал его как слишком удачное задание копирования-вставки, поскольку он был необходим для выполнения в процессе так, как я его понял.

И я был не прав. Я надеюсь, что это поможет кому-то еще в ближайшем будущем. :)

...