Quelqu'un at-il une idée de l'échec de CoCreateInstance sur ITaskBarList3 sous Windows 7 64 bits? Le code d'erreur est 0x80040154, qui est la classe non enregistrée.CoCreateInstance échoue avec 0x80040154 sur ITaskBarList3
Le code d'appel (VB6) est:
Public Const IID_ITaskbarList3 = "{EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF}"
Public Const CLSID_TaskbarList3 = "{EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF}"
'....
Dim IID As GUID_API
Dim CLSID As GUID_API
Dim iTaskBarVB3 As ShellLib.ITaskbarList3
rc = CLSIDFromString(StrPtr(CLSID_TaskbarList3), CLSID)
rc = IIDFromString(StrPtr(IID_ITaskbarList3), IID)
rc = CoCreateInstance(CLSID, 0, CLSCTX_SERVER, IID, iTaskBarVB3)
Les retours de CLSIDFromString et IIDFromString sont tous deux 0 (succès). Je peux trouver la chaîne dans le registre. Comme ma barre des tâches fonctionne bien, je sais que l'interface peut être appelée par d'autres processus.
ITaskBarList3 est déclaré dans une typelib compilée à l'aide de mktyplib.exe. J'ai vérifié les valeurs GUID, et ils correspondent à ceux dans le SDK.
Toute aide serait grandement appréciée.
Je n'ai jamais vu un ID de classe étant égal à l'ID de l'interface. Peut-être que ça marcherait de temps en temps mais c'est typique de les avoir différents. – sharptooth
@sharptooth: Moi non plus, je n'ai jamais vu les deux comme identiques.Mais, OMI, cela pourrait fonctionner puisque les deux ont des sections différentes dans le Registre et la recherche pour les deux est à des endroits distincts. Cela dit, cela ne devrait pas être fait. Mais je suis curieux de savoir pourquoi cela ne fonctionnera pas? – Aamir
Je suppose que cela fonctionnerait, mais voir un tel code est très suspect. – sharptooth