hi,
Ich wurde gefragt warum ich die CLSID statt der ProgID verwende ?
naja 1.) weil mir der FormDesigner XppFD.EXE diese per DragDrop liefert
und 2.) weil es meiner Erfahrung nach "der" Weg ist.
In der ProgID ist meistens die Versionsnummer mit enthalten und funktioniert
nach einem Update nicht mehr. Dies „sollte“ bei CLSID kein Problem sein.
Beispiel M$ Windows Media Player :
oWMP:CLSID := "{6BF52A52-394A-11D3-B153-00C04F79FAA6}"
//oWMP:CLSID := "WMPlayer.OCX.7"
nun gab es bis zur v6.4 eine andere CLSID, aber ab v7 gilt immer noch dieselbe CLSID
während die Versionen .8 .9 .10 .11 .12 … sein könnten.
Klar hält sich nicht jeder Hersteller daran (incl. M$ ), aber viele „leiten“ bei einem
Updates von der „alten“ automatisch auf die „neue“ um sodass die weiterhin „gültig“ ist.
es gibt also gute Gründe für CLSID ... und für ProgID ?
Kommentare und andere Erfahrungen erwünscht.
CLSID vs. ProgID
Moderator: Moderatoren
- brandelh
- Foren-Moderator
- Beiträge: 15695
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: CLSID vs. ProgID
So wie ich das sehe kann man mitAUGE_OHR hat geschrieben:In der ProgID ist meistens die Versionsnummer mit enthalten und funktioniert
nach einem Update nicht mehr. Dies „sollte“ bei CLSID kein Problem sein.
...
//oWMP:CLSID := "WMPlayer.OCX.7"
CreateObject("Word.Application") versionsunabhängig und mit
CreateObject("Word.Application.8") versionsunabhängig arbeiten, falls dies sinnvoll ist.
Unter HKEY_CLASSES_ROOT steht auch
WMPlayer.OCX.7 -> versionsabhängig, und
WMPlayer.OCX -> das sollte versionsunabhängig sein.
Gruß
Hubert
Hubert
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9357
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: CLSID vs. ProgID
Die weitgehend (vereinfacht gesagt) numerische CLSID unterscheidet sich innerhalb einer Modulversion z.B. dadurch, wie sie lizensiert ist. Demoversionen haben andere CLSIDs als Vollversionen, und dann gibt es meiner Erfahrung nach auch noch Unterschiede je nach Ausstattung (Enterprise, Web, Server Edition usw.). Bei einigen Komponenten bleibt aber die CLSID z.B. über verschiedene Versionen hinweg gleich (!), zum Beispiel bei TX Text Control, wohingegen die ProgID (die man ja alternativ nutzen kann) mit der Versionsnummer wechselt. Für die Möglichkeit, dass ein Control auch von anderen Anwendungen genutzt wird - und sowas passiert! -, ist es m.E. deshalb zu empfehlen, immer die ProgID zu nutzen, um sicherzustellen, dass auch die richtige Version angefasst wird und man nicht versehentlich auf eine Fassung des Controls zugreift, die von einer anderen App mitgeliefert wurde.
Herzlich,
Tom
Tom
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: CLSID vs. ProgID
hi,
Es gab einen Grund warum man das nicht verwenden sollte, aber ich komme z.Z. nicht drauf.
eine CLSID dafür "verschwendet" keiner (den die kostet Geld wenn du die bei M$ registrieren lässt )
"leitet" ggf. weiter sodas bei einer CLSID immer die "latest" Version benutzt wird.
weiteres Beispiel : Acrobat Reader Sample Alaska
Da ist noch die "uralte" CLSID drin, aber wenn man v8 / v9 richtig "geupdatet" hat dann läuft
das Sample noch immer mit der selben CLSID aber schon die v6 lief nicht mit ProgID.
Genau das ist ja der Grund warum ich diesen Thread angefangen haben weil es scheinbar viele
nicht wissen und nicht alle haben schon "hunderte" von activeX ausprobiert.
Das letzte nennt man "VersionIndependentProgID" womit ich nicht arbeite.Hubert hat geschrieben: WMPlayer.OCX.7 -> versionsabhängig, und
WMPlayer.OCX -> das sollte versionsunabhängig sein.
Es gab einen Grund warum man das nicht verwenden sollte, aber ich komme z.Z. nicht drauf.
sorry aber das ist falsch, der Unterschied liegt alleine in der Runtime Licence.Tom hat geschrieben: Demoversionen haben andere CLSIDs als Vollversionen
eine CLSID dafür "verschwendet" keiner (den die kostet Geld wenn du die bei M$ registrieren lässt )
genau eben nicht ! Ein Gutes Programm "merkt" anhand der CLSID wenn es ein Update gab undTom hat geschrieben:...Bei einigen Komponenten bleibt aber die CLSID z.B. über verschiedene Versionen hinweg gleich (!), zum Beispiel bei TX Text Control, wohingegen die ProgID (die man ja alternativ nutzen kann) mit der Versionsnummer wechselt. Für die Möglichkeit, dass ein Control auch von anderen Anwendungen genutzt wird - und sowas passiert! -, ist es m.E. deshalb zu empfehlen, immer die ProgID zu nutzen, um sicherzustellen, dass auch die richtige Version angefasst wird und man nicht versehentlich auf eine Fassung des Controls zugreift, die von einer anderen App mitgeliefert wurde.
"leitet" ggf. weiter sodas bei einer CLSID immer die "latest" Version benutzt wird.
weiteres Beispiel : Acrobat Reader Sample Alaska
Da ist noch die "uralte" CLSID drin, aber wenn man v8 / v9 richtig "geupdatet" hat dann läuft
das Sample noch immer mit der selben CLSID aber schon die v6 lief nicht mit ProgID.
Genau das ist ja der Grund warum ich diesen Thread angefangen haben weil es scheinbar viele
nicht wissen und nicht alle haben schon "hunderte" von activeX ausprobiert.
gruss by OHR
Jimmy
Jimmy
- Lewi
- 1000 working lines a day
- Beiträge: 830
- Registriert: Di, 07. Feb 2006 14:10
- Wohnort: Hamburg
- Danksagung erhalten: 2 Mal
Re: CLSID vs. ProgID
Die ProgId ist so etwas wie der Alias-Bezeichner in Form einer Zeichenkette einer CLSID. Die OS-COM-Bibliothek (auch COM-API genannt, zur Verfügung gestellt von der OLE32.DLL) löst die ProgId mittels eines internen Aufrufes in eine CLSID um.
Wie aus Jimmys Anmerkungen hervor geht, sind CLSID (welweit) eindeutig, für ProgId´s gilt dies nicht. Im Grunde kann der Entwickler einer ActiveX-Komponete die ProgId willkürlich wählen und z.B. die gleichen Namen wählen, wie bereits bekannte ProgId´s.
Wie aus Jimmys Anmerkungen hervor geht, sind CLSID (welweit) eindeutig, für ProgId´s gilt dies nicht. Im Grunde kann der Entwickler einer ActiveX-Komponete die ProgId willkürlich wählen und z.B. die gleichen Namen wählen, wie bereits bekannte ProgId´s.