Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zbrka sa verzijama ActiveX kontrola...

[es] :: C programiranje :: Zbrka sa verzijama ActiveX kontrola...

[ Pregleda: 875 | Odgovora: 4 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sspasic
Sasa Spasic

Član broj: 3261
Poruke: 175
*.medianis.net

Jabber: sspasic@elitesecurity.org
ICQ: 35454521


Profil

icon Zbrka sa verzijama ActiveX kontrola...16.07.2003. u 00:12

Da ukratko opisem problem - u stvari dva problema koja mislim da imaju isti uzrok:

Problem 1:

Imam ActiveX kontrolu A (ATL) koja za vreme rada instancira ne-vizuelnu kontrolu B (neki drugi programski jezik).
Ako kontrolu B izmenim i dodelim joj sledeci broj revizije A odbija da je instancira na sledeci nacin:

Code:

#import "ime_B_kontrole.dll"
using namespace KontrolaBNamespace;
...
CComPtr<interfejsKontroleB> myCtl;
myCtl.CoCreateInstance(__uuidof(klasaKontroleB));


Ako A prekompajliram ponovo, sa #import-om nove B sve proradi.

Problem 2:

Ovde kontrola A (ATL) definise COM interfejs koji kontrola B (takodje ATL, ali vizuena) implementira.
Kada izmenim kontrolu A i prekompajliram sa uvecanim brojem revizije, kontrola B
prestane da radi sve dok je ne iskompajliram ponovo, sa #import-om nove revizije A.

Obzirom da u programu imam i citav niz drugih kombinacija u raznim MS i ne-MS programskim jezicima (ne pitajte zasto), ovo su jedina dva slucaja gde azuriranje jedne kontrole trazi i azuriranje neke druge, sto bi trebalo da izbegnem kad god je to moguce.

U oba slucaja interfejsi obe kontrole nisu menjani- radi se o izmenama u samoj implemetaciji pojedinih metoda i nuznom povecavanju broja revizije.

Zna li neko zasto se ovo desava?
Koja se to jos informacija sem CLSID-a kontrole zapise u iskompajliran program i da li je to moguce izbeci?

Unapred hvala,
Spaske

16.07.2003. u 00:12 

leka
Dejan Lekić
senior software engineer, 3Developers Ltd.
London, UK

Član broj: 234
Poruke: 2530
*.racasse.se

Sajt: dejan.lekic.org


Profil

icon Re: Zbrka sa verzijama ActiveX kontrola...18.07.2003. u 14:52
Ja sam laik za te stvari, ali mi se cini da ta kontrola B treba da se registruje da bi proradila, znaci vidi kako da odradis tu automatizaciju registrovanja. Nije iskljuceno da gresim...
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
18.07.2003. u 14:52 

sspasic
Sasa Spasic

Član broj: 3261
Poruke: 175
*.medianis.net

Jabber: sspasic@elitesecurity.org
ICQ: 35454521


Profil

icon Re: Zbrka sa verzijama ActiveX kontrola...18.07.2003. u 16:39
Kontrola B je registrovana u oba slucaja.
U slucaju 2 ne pomaze ponovna registracija. Samo kompajliranje.

Nego da ispravim sam sebe:
drugi slucaj nisam lepo opisao - greska koja se javlja je da, posto izmenim kontrolu A,
od kontrole B ne mogu da dobijem onaj interfejs iz A (QueryInterface ne uspe) iako ga implementira.

Zato sam i pretpostavio da se u ova dva slucaja sem CLSID-a kod referenciranja na drugu kontrolu pamti jos ponesto mada ne vidim razlog tome...

A bitno mi je da ovo eliminisem - posto je to 'zahtev'.

18.07.2003. u 16:39 

Rapaic Rajko
programer, Grappolo
Bgd

Član broj: 4105
Poruke: 363
80.93.225.*



Profil

icon Re: Zbrka sa verzijama ActiveX kontrola...18.07.2003. u 18:06
Sad sam se setio; odgovor je GUID.
Svaki COM interfejs/klasa ima jedinstveni GUID, koji se registruje u Registry bazi i preko kojeg bilo koji jezik (sa podrskom za COM) moze traziti od sistema da mu napravi instancu date COM kontrole. Tvoj wizard verovatno svaki put generise nov GUID, pa onaj drugi typelibrary ne moze da ga kreira.
GUID izgleda kao veliki skup hex cifara razdvojenih crticama (ako se ne varam, 16 bajtova). Proveri da nije to.
Ako jeste, svaki put treba u tvoj kod od TLB-a da upises stari GUID, i nece biti problema.
Pozdrav

Rajko
18.07.2003. u 18:06 

Dragi Tata

Član broj: 1958
Poruke: 3883
199.171.112.*

Sajt: www.novetehnologije.com


Profil

icon Re: Zbrka sa verzijama ActiveX kontrola...18.07.2003. u 18:45
Šta god da izmeni, to se zapiše u registry (jedan od razloga zašto ne volim COM). Uporedi stanje pre i posle kompajliranja, pa ćeš da nađeš u čemu je štos.
18.07.2003. u 18:45 

[es] :: C programiranje :: Zbrka sa verzijama ActiveX kontrola...

[ Pregleda: 875 | Odgovora: 4 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.