Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi comObj initialisieren welches nicht registrierbar ist. (https://www.delphipraxis.net/90721-comobj-initialisieren-welches-nicht-registrierbar-ist.html)

EWeiss 22. Apr 2007 19:15


comObj initialisieren welches nicht registrierbar ist.
 
Hallo

Ein Object was registriert werden kann,
kann ich ja mit

Delphi-Quellcode:
comObjType := CreateComObject(sCLSID) as IWMPEffects;
erstellen.

Nun möchte ich aber eine Visualisierung innerhalb einer DLL initialisieren
welche nicht registrierbar ist aber die CLSID bekannt ist.

CreateOleObject funktioniert nicht ..
Welche möglichkeiten gibt es da noch?

Zur Info!
Die Visualisierung Alchemie befindet sich in der mpvis.dll welche ich registrieren kann.
  • clsid:{0AA02E8D-F851-4CB0-9F64-BBA9BE7A983D}
    description: res://mpvis.dll/RT_STRING/#100
    name: res://mpvis.dll/RT_STRING/#100
Diese läßt sich mit obigen Befehl initialisieren und ansprechen.

Die Visualisierung Battery befindet sich in der wmploc.dll
  • clsid: {8D2A317B-D98B-4efa-89D6-E49F0ACF98A1}
    description: res://wmploc.dll/RT_STRING/#1564
    name: res://wmploc.dll/RT_STRING/#1563
Läßt sich aber nicht registrieren.
Ich möchte sie aber trotzdem ansprechen können.!

Wie kann ich das realisieren ?

gruss Emil

EWeiss 22. Apr 2007 20:58

Re: comObj initialisieren welches nicht registrierbar ist.
 
Hat sich auch erledigt.
Lösung gefunden.

gruss Emil

Phoenix 22. Apr 2007 21:22

Re: comObj initialisieren welches nicht registrierbar ist.
 
Klasse wäre es, wenn Du uns auch noch kurz erzählst wie Du es hinbekommen hast.. für den Fall dass das gleiche Problem noch jemand anderes hat. ;-)

EWeiss 22. Apr 2007 22:30

Re: comObj initialisieren welches nicht registrierbar ist.
 
Zitat:

Zitat von Phoenix
Klasse wäre es, wenn Du uns auch noch kurz erzählst wie Du es hinbekommen hast.. für den Fall dass das gleiche Problem noch jemand anderes hat. ;-)

Hmmm jo hat mich 4 Stunden suche im internet gekostet ;)

Also zuerst es hat nichts mit der wmploc.dll zu tun,
sondern damit das MS den Zugriff auf seine Visualisierungen unterbunden hat.

Alle Vis_Interface(classen) wurden als Privat deklariert so das man von außen nicht mehr drauf zugreifen kann.
Aber einen Trick gibt es trotzdem.

Die Vis befinden sich in der DLL wmppia.dll.
Auch diese ist nicht registrierbar außer man geht den umweg über RegAsm.exe

Zitat:

You must register and install the Windows Media Player PIA by using the Assembly Registration Tool (RegAsm.exe) and the Global Assembly Cache Utility (GacUtil.exe).
regasm C:\WMSDK\WMPSDK9\redist\wmppia.dll
RegAsm fügt nun in der Registry den selben Typelib Schlüssel ein wie der von der originalen Typelib.

Für Net benötigt man noch das Utility GacUtil welches den Eintrag 'GAC' für Net unter assembly registriert.

Nun kann man den Media Player (wmp.dll) in (NET) in sein Projekt einbinden und bekommt einen zusätzlichen Verweis
AxWMPLib, plus WMPLib.

Dadurch hat man nun die möglichkeit die Visualisierungen direkt aus dem Interface
heraus anzusprechen und benötigt keine Registrierung mehr.

In Delphi muss man nur noch die TypeLib einbinden und kann auch von hier aus direkt die Visualisierungen ansprechen.
Die Lib der Pia wird dann automatisch mit übernommen.

Das ganze funktioniert für den MediaPlayer 9.0
Wenn man den MediaPlayer 10 verwenden will muss man nur Player.controls nach Player.Ctlcontrols umbenennen
dann klappt das ganze auch mit dem.

Gruss Emil


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz