"Klasse nicht Registriert" bei CoCreateInstance
-
Hi,
ich bin noch nicht wirklich lang in der COM Programmierung, daher bitte ich um Nachsicht bei groben schnitzern.
Folgender Code erzeugt den o.g. Fehler:
hr = CLSIDFromProgID(L"ELO.professional", &clsid); if (FAILED (hr)) { MessageBox(NULL, "Bekomme keine ID", "FEHLER!", MB_SETFOREGROUND); return -1; } else { //Hier gibt es den Fehler hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, IID_IDispatch, (void**) &pDisp); if (FAILED (hr)) { MessageBox(NULL, "CoCreate Fehlgeschlagen", "FEHLER!", MB_SETFOREGROUND); return -1; } else (...)
Möglicherweise liegt ein Problem mit der Registry vor. Allerdings findet die Methode CLSIDFromProgID (sehe ich im Debugger) in der Registry die richtige GUID zur angegebenen ProgID. Deswegen wundert mich das ein wenig.
habt Ihr Ideen, wie ich den Fehler weiter einkreisen könnte?
-
Was steht in "hr" genau für einen Code?
Entweder gibt es keinen InProc oder es gibt kein IDispatch...PS: Für IDispatch rate ich Dir:
http://blog.kalmbachnet.de/?postid=63
-
hr ist ein HRESULT.
-
Er will den WERT von hr wissen.
-
der Wert ist:
0x80040154 Klasse nicht registriert
-
Du solltest man in einem ELO-FOrum fragen, oder die Handbücher lesen... und dann wie gesagt:
- Gibt es überhaupt IDispatch Unterstützung?
- Läuft dies überhaupt als InProc-Server?
-
Die Handbücher sind geil, derartige Details werden da konsequent verschwiegen. Es wird zwar der Zweck jeder einzelnen Methode erklärt, mehr auch nicht. Alle anderen Handbücher erklären mir, wie ich als Benutzer das Programm bediene. Da ich aber den Server per DLL einbinden muss, ging ich mal von InProc aus.
-
Wenn es eine DLL ist, dann wird es wohl InProc sein... versuche doch zuerst mal IUnknown zu bekommen, das sollte auf jeden Fall gehen...
-
Danke! Werd ich gleich mal machen. Es ist auf jeden Fall eine DLL und da es keine *.tlb gibt, dachte ich eben an LateBinding und IDispatch.