Windows 7 64 비트에서 ITaskBarList3에서 CoCreateInstance가 실패하는 이유는 누구나 알 수 있습니까? 오류 코드는 등록되지 않은 클래스 인 0x80040154입니다.CoCreateInstance가 ITaskBarList3에서 0x80040154와 함께 실패합니다.
호출 코드 (VB6)입니다 : CLSIDFromString 및 IIDFromString에서
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)
수익률이 모두 0 (성공)입니다. 레지스트리에서 문자열을 찾을 수 있습니다. 내 작업 표시 줄이 분명히 잘 작동하고 있기 때문에 인터페이스가 다른 프로세스에서 제대로 호출 할 수 있다는 것을 알고 있습니다.
ITaskBarList3은 mktyplib.exe를 사용하여 컴파일 된 형식 라이브러리에서 선언됩니다. GUID 값을 두 번 확인했는데 SDK에있는 값과 일치합니다.
도움을 주시면 감사하겠습니다.
클래스 ID가 인터페이스 ID와 같지 않은 것을 본 적이 없습니다. 어쩌면 한 번씩 작동 할 수도 있지만 일반적으로 다를 수 있습니다. – sharptooth
@sharptooth : 나는 둘 다 똑같이 본 적이 없다.그러나 IMO는 둘 다 레지스트리의 서로 다른 섹션을 가지고 있기 때문에 작동 할 수 있습니다. 둘 다에 대한 조회가 별도의 장소에 있기 때문에 가능합니다. 그런 말로하면 안된다. 그러나 이것이 왜 효과가 없을지 궁금하다. – Aamir
나는 그것이 효과가있을 것이라고 추측하지만 그러한 코드를 보는 것은 매우 의심 스럽다. – sharptooth