Enumerare tutti gli oggetti di attuazione IDispatch su una macchina
Domanda
Mi piacerebbe elencare tutti gli oggetti che supportano IDispatch su una macchina. Al momento ho bisogno di sapere che cosa l'id classe o prog id non è che, per ispezionare la mia macchina, mi piacerebbe sapere se posso solo elencare tutti gli oggetti che implementano IDispatch.
Questo è anche possibile?
Qualsiasi aiuto sarebbe molto apprezzato:)
Soluzione
Questa è una richiesta molto strano. Il guaio è nel "tutti" stipula. Semplice l'enumerazione attraverso la chiave HKCR \ Typelib e LoadTypeLib () non è sufficiente, un server COM non è tenuta a pubblicare una libreria di tipi. Si avrebbe in realtà dovuto CoCreateInstance () coclasse e QueryInterface per IDispatch. Non solo questo è lento, è anche rischioso.
Si potrebbe ottenere una risposta migliore se si spiega il motivo per cui si sarebbe effettivamente contemplare fare qualcosa di simile. La chiamata IDispatch :: Invoke () senza avere un qualche tipo di idea di cosa significano le argomentazioni o quello che gli effetti collaterali potrebbero essere è una ricetta per il disastro. Stare lontano da nomi di metodo come "ReformatDrive".