[C++Builder] ActiveX plugin werkt niet

Pagina: 1
Acties:

  • PKP B-Man
  • Registratie: November 2002
  • Laatst online: 19-07-2023
Ik heb een ActiveX plugin waarvan ik weet dat deze in MS Visual C++ is geschreven Ik heb ook een MSVC app die deze plugin gebruik die prima werkt. Nu wil ik deze plugin ook in Borland C++ Builder gebruiken, maar ik krijg dat absoluut niet voor elkaar... Ik heb alles al geprobeerd wat in me op kwam om hem werkend te krijgen, maar zonder resultaat. Zodra ik de DLL registreer via regsvr32 staat ie netjes in mijn lijst met AvtiveX componenten. Zodra ik de DLL nu importeer via Component | Import ActiveX, gaat importeert/build ie alles perfect zonder enige foutmeldingen en/of warnings. De componenten komen ook keurig in de ActiveX toolbar.

MAAR zodra ik nu een van deze componenten probeer te gebruiken op door ze simpelweg op het Form te slepen geeft Borland *gelijk* de foutmelding "No such interface supported." en zal het component ook niet op het formulier verschijnen.
Ook als ik probeer om de component runtime aan te maken door de header file xxxLib_OCX.h te importeren en het component runtime probeer aan te maken:
Txxx *bla = new Txxx(Owner);
geeft Borland de volgende foutmelding zodra hij de code probeert uit te voeren.
Project Project1.exe raised exception class EOleSysError with message 'No such interface supported'..
Process stopped. Use Step or Run to continue.

Omdat ik het component toch in Borland C++ Builder moet zien te krijgen ging ik maar wat andere dingen proberen:
ik heb de DLL gekopieerd en deze naar een TLB gerenamed. Deze geopend met C++Builder, en ik krijg een keurige lijst met methods en properties. Deze typelibrary opgeslagen en vervolgens de originele DLL weer ge-unrgeistered met regsvr32. Vervolgens heb ik deze file geinstalleerd via import type library. Het viel me hier op dat Borland nu naast xxxLib_OCX nu ook een file xxxLib_TLB genereerd welke hij niet aanmaakt als je de ActiveX component direct importeerd.
Zodra ik nu de componenten op de ActiveX toolbar naar het formulier sleep gaat dat prima, ook het compileren gaat prima. Nu regsitreer ik de originele DLL weer, zodat deze gevonden en gebruikt kan worden door windows. Zodra ik nu een Connect() probeer wordt de volgende foutmelding gegenereerd:
HRCHECK:
'src->QueryInterface(GetIID(),(LPVOID*)(&intf))': No such interface supported @ c:\program files\borland\cbuilder6\include\vcl\utilcls.h/3002
Press [Y]es to terminate, [N]o to continue and [C]ancel to Debug

(offtopic: hoe kan ik trouwens [Y]es to terminate, [N]o to continue AND [C]ancel to Debug klikken? :+ )

Ik ben er van overtuigd dat het echter toch moet kunnen om deze file te importeren en te gebruiken in C++Builder, en dat ik wat fout doe of iets vergeet... Is er een manier om deze DLL toch werkend te krijgen? Bijvoorbeeld door een kleine aanpassing te maken in de gegenereerde OCX (of TLB) file?
En wat is de theorie achter deze melding? En wanneer wordt deze gegenereerd?

En uiteraard is elke tip/opmerking welkom, en niet alleen de oplossing :)

Alvast bedankt!

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 22-08 17:28

alienfruit

the alien you never expected

Wat als je um on ru ntime aanmaakt de ActiveX :) ?
Werkt ie wel onder Visual Basic?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

offtopic:
Met USB kun je zo 3 muizen aansluiten ;)

Professionele website nodig?


  • PKP B-Man
  • Registratie: November 2002
  • Laatst online: 19-07-2023
>> Wat als je um on ru ntime aanmaakt de ActiveX :) ?
PKP B-Man schreef op 23 May 2003 @ 11:35:
Ook als ik probeer om de component runtime aan te maken door de header file xxxLib_OCX.h te importeren en het component runtime probeer aan te maken:
Txxx *bla = new Txxx(Owner);
geeft Borland de volgende foutmelding zodra hij de code probeert uit te voeren.
Project Project1.exe raised exception class EOleSysError with message 'No such interface supported'..
Process stopped. Use Step or Run to continue.
Dat werkt dus helaas ook niet... En ik heb geen idee waarom hij het niet doet :?
Hij geeft continu aan dat er iets fout is met de interface, maar geen idee wat...

>> Werkt ie wel onder Visual Basic?
Geen idee... Ik heb geen VB en dus ik kan ik dat ook niet proberen, maar met MSVC werkt hij wel iig.

Verwijderd

ActiveX componenten kunnen optioneel voorzien worden van een beveiligings mechanisme waardoor ie alleen in een compileerde exe file kan gebruiken maar niet in een ontwikkel omgeving, dit om te voorkomen dat jan en alleman er met je componenten van tussen gaat. Voor de technishe info moet je de docs van IClassFactory2 kijken

  • PKP B-Man
  • Registratie: November 2002
  • Laatst online: 19-07-2023
Verwijderd schreef op 23 May 2003 @ 12:03:
ActiveX componenten kunnen optioneel voorzien worden van een beveiligings mechanisme waardoor ie alleen in een compileerde exe file kan gebruiken maar niet in een ontwikkel omgeving, dit om te voorkomen dat jan en alleman er met je componenten van tussen gaat. Voor de technishe info moet je de docs van IClassFactory2 kijken
Het ActiveX component is inderdaad beveiligd, maar ik ben ook in bezit van de license key. Het betreft een component dat gebruikt kan worden zodat er geen gebruik gemaakt hoeft te worden van hun applicatie en dus geintegreerd kan worden een een eigen applicatie en dus bedoeld is om gebruikt te worden door andere exe file.

Maar het lijkt me toch sterk dat de applicatie in zo'n geval een no such interface error genereerd? Als ik de license file verwijder bij de meegeleverde test applicatie geeft deze geen foutmelding, maar genereerd een andere file waarmee een license file kan worden aangemaakt. Dat doet mijn applicatie ook niet.

8)7 That no such interface thing beats me

[ Voor 3% gewijzigd door PKP B-Man op 23-05-2003 12:25 ]


Verwijderd

Je haalt nu de licentie voor de applicatie en de licentie voor het component door elkaar...
Pagina: 1