Windows 7の64ビット版のITaskBarList3でCoCreateInstanceが失敗する理由はありますか?エラーコードは、クラスが登録されていない0x80040154です。ITaskBarList3の0x80040154でCoCreateInstanceが失敗する
呼び出しコード(VB6)である:
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)
CLSIDFromStringとIIDFromStringから戻る両方0(成功)です。私はレジストリ内の文字列を見つけることができます。私のタスクバーは明らかにうまく動作しているので、インターフェイスは他のプロセスから呼び出すことができます。
ITaskBarList3は、mktyplib.exeを使用してコンパイルされたタイプライブラリで宣言されています。私はGUID値を二重チェックして、SDKのものと一致します。
ご協力いただければ幸いです。
クラスIDがインターフェイスIDと同じであることはありません。おそらくそれはしばらくしてはうまくいくかもしれませんが、それらを異ならせるのが典型的です。 – sharptooth
@sharptooth:私も同じように両者を見たことはありません。しかし、IMOでは、両方ともレジストリの異なるセクションを持ち、両方のルックアップが別々の場所にあるので、これはうまくいく可能性があります。それを言って、これはしないでください。しかし、なぜこれがうまくいかないのか不思議です。 – Aamir
私はそれがうまくいくと思いますが、そのようなコードを見ることは非常に疑わしいです。 – sharptooth