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

Zbrka sa verzijama ActiveX kontrola...

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

[ Pregleda: 2911 | Odgovora: 4 ] > FB > Twit

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 - pre 229 meseci
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

 
Odgovor na temu

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

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

Sajt: dejan.lekic.org


+2 Profil

icon Re: Zbrka sa verzijama ActiveX kontrola...18.07.2003. u 14:52 - pre 229 meseci
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
 
Odgovor na temu

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 - pre 229 meseci
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'.

 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 802
80.93.225.*



+62 Profil

icon Re: Zbrka sa verzijama ActiveX kontrola...18.07.2003. u 18:06 - pre 229 meseci
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
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Zbrka sa verzijama ActiveX kontrola...18.07.2003. u 18:45 - pre 229 meseci
Š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.
 
Odgovor na temu

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

[ Pregleda: 2911 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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