Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » ActiveX-DLL einbinden und nutzen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.04.2011, 13:33 Uhr
notice7



Hi zusammen,

ich möchte gerne eine ActiveX-DLL einbinden und ansprechen. Die DLL beinhaltet
ein paar Klassen die ich gerne benutzen möchte.

Ich habe mich schon etwas durch die Suche und Google gewurstelt, allerdings komm ich nicht auf den grünen Zweig, liegt vielleicht auch daran, dass ich relativ neu bei C++ bin, technisches Verständnis, z.B. was Pointer sind usw. ist allerdings reichlich vorhanden. In diesem Fall muss es allerdings leider C++ sein.

Könnt ihr mir helfen?

Habe es so verstanden, dass man die DLL einbindet und dann Interfaces bereitstellt, die die Funktionen aus der DLL kennen. Ist das soweit richtig?
Hier und da findet man auch Beispiele, allerdings habe ich bisher keines gefunden, dass auch Klassen aus einer ActiveX-Dll nutzt.

Freue mich auf jegliche Beispiele und/oder Tipps!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.04.2011, 14:47 Uhr
TOSHMAX



Falls du keine .a oder .lib Datei hast, die zu dieser DLL gehört, ist es meines Wissens nach ohne großen Aufwand nicht möglich eine Klasse zu importieren.

Ich habe zwar gerade versucht (und geschafft) eine member function zu importieren und aufzurufen, aber ich glaube nicht, dass du das mit diesen Klassen machen willst.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.04.2011, 15:52 Uhr
0xdeadbeef
Gott
(Operator)


ActiveX hängt mit COM und OLE zusammen - eine Art windowsspezifisches CORBA. "Objekt" ist hier nicht im Sinne eines C++-Objektes zu verstehen, sondern als Objekt, das vom ORB gehalten wird und zu dem man ein Interface anfordert.

Ich hab ActiveX immer vermieden, aber ich meine, dass sich der COM-ORB um die DLL kümmert. Du wendest dich wie gehabt mit CoCreateInstance(Ex) an den COM-ORB, um ein Objekt zu erstellen und ein Interface darauf anzufordern. Also

C++:
HRESULT hr;
IDeinInterface *iface;

hr = CoCreateInstance(CLSID_DEINE_CLASS_ID, NULL, CLSCTX_INPROC_SERVER, IID_DEINE_INTERFACE_ID, static_cast<void**>(&iface));

if(SUCCEEDED(hr)) {
  // iface benutzen
  iface->Release();
}


Wichtig ist, dass die ActiveX-Dll richtig installiert ist, damit der COM-ORB sie findet. Insbesondere bedeutet das, dass die CLSIDs registriert sein müssen. Die Parameter zu CoCreateInstance solltest du in der MSDN nachschlagen; was für dich am sinnvollsten ist, kann ich aus der Entfernung nicht sagen.

Alles unter dem Vorbehalt: Ich bin wahrlich kein ActiveX-Meister.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: