Estensione di debug della shell in Vista (IShellFolder)
-
05-07-2019 - |
Domanda
Ho creato un'estensione della shell di Windows usando ATL (Visual Studio 2008). Ha i seguenti moduli e ogni modulo è un oggetto semplice ATL separato con il proprio file .rgs per la registrazione: -
- IShellFolder / IShellView - > Per un'unità virtuale in Windows Explorer
- IContextMenu / IShellExtInit - > Per un menu popup file e cartelle
- IShellIconOverlayIdentifier - Per visualizzare le icone di sovrapposizione su file e cartelle
- IShellPropSheetExt / IShellExtInit - > Per una pagina delle proprietà personalizzate in File & amp; Proprietà della cartella
Quanto sopra funziona bene in WinXP e sono in grado di eseguire il debug di questa estensione shell in WinXP. Ma non appena passo a Vista, ricevo solo le chiamate di metodo per (2) e (4). L'unità viene creata in Esplora risorse ma i metodi sottostanti non vengono chiamati quando faccio clic su di esso. Anche se quando faccio clic con il tasto destro, mi viene richiesto (2) e quando seleziono " Proprietà " per un file o una cartella ottengo il codice per (4).
C'è qualche interfaccia che mi manca per (1) e (3) su Vista. Non sono riuscito a trovare la documentazione completa e dettagliata sulla scrittura di Shell Extensions per Vista su MSDN. Avevo già esaminato gli articoli di CodeProject sulle estensioni della shell.
Soluzione
Il problema era dovuto all'utilizzo di un puntatore SMART Xml. Si sono verificati problemi quando è stato chiamato Release ().
Controlla questo link Internet Explorer si arresta in modo anomalo quando MSXML2 :: IXMLDOMDocumentPtr - > Release () si chiama
Altri suggerimenti
Assicurati che le tue estensioni gestiscano correttamente l'inizializzazione, altrimenti verclsid.exe non permetterà che l'estensione venga caricata. verclsid.exe carica prima le estensioni della shell e le verifica rapidamente prima di inviare un "ok" alla shell indicando che è sicuro caricare l'estensione.
Vedi qui per alcuni dettagli su verclsid.exe.