0

GetClassFile 関数を使用して DLL 名をパラメーターとして渡し、関数が CLSID を返すことを期待しています。次に、CoCreateInstance を使用して、dll が登録されているかどうかを確認できました。

GetClassFile()登録済みの DLL を渡しても、有効な戻り値を取得できません。

HRESULT hr = GetClassFile((LPCOLESTR) "C:\\Program Files\\Common Files\\Microsoft Shared\\DAO\\dao360.dll", &clsid);
4

1 に答える 1

1

GetClassFile()COMとは関係ありません。ドキュメントを読んだ場合、DLLファイル名を渡しても、に渡すことができるCOMCLSIDは生成されませんCoCreateInstance()。常にエラーで失敗しMK_E_INVALIDEXTENSIONます。

LoadTypeLib()実行できるのは、DLLがタイプライブラリを実装しているかどうかを確認し、そのITypeLibインターフェイスを取得するために呼び出すことです。成功した場合は、、、、およびメソッドを呼び出してGetTypeInfoCount()、各オブジェクトのインターフェイスを見つけて取得できます。それぞれについて、そのメソッドを呼び出してその を取得できます。それができたら、インターフェイスを要求して登録を確認することができます(または、レジストリのキーを手動で確認することもできます)。GetTypeInfoType()GetTypeInfo()ITypeInfoTKIND_COCLASSITypeInfoGetTypeAttr()CLSIDCoCreateInstance()IUnknownHKEY_CLASSES_ROOT\CLSID\<clsid>

于 2012-03-08T06:21:35.570 に答える