Einzelnen Beitrag anzeigen

berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#1

Ole-Objekt sauber freigeben

  Alt 10. Okt 2007, 15:00
Kurzfassung: Nach löschen des OLE-Containers ist OleObjekt immernoch vorhanden.

Ich bastel hier gerade mit dem VLC-Player ActiveX ( http://www.videolan.org ) und OleContainern herum und bin auf ein gravierendes Problem gestoßen.

VLC bietet die Möglichkeit an, zwecks Fehlersuche, beim Programmstart von VLC parallel ein Konsolenfenster aufzumachen, in dem geloggt wird. Diese Option habe ich aktiviert.

Wenn ich nun in meinem Programm einen OleContainer erstelle, und dort einen VLC-Player erstelle, geht also auch dieses Konsolenfenster auf (Extra-Icon in der Taskleiste).

Delphi-Quellcode:
  CreateObject('VideoLAN.VLCPlugin.2', False);
  DoVerb(ovShow);
  iVLC := IUnknown(OleObjectInterface) as IVLCControl2;
Soweit alles OK. ABER: Sobald ich das Objekt wieder ordnungsgemäß zerstören/beenden will mit:

Delphi-Quellcode:
 VLCPlayer.DoVerb(ovHide);
 FreeAndNil(VLCPlayer);
ist dieses Konsolenfenster immernoch zu sehen.

D.h. VLC wird nicht korrekt/komplett beendet, bzw. das OleObject wird nicht komplett entladen.

FreeAndNil(iVLC) funktioniert nicht beim Aufruf in TVLCPlayer.Destroy.

Wie geht das richtig?
  Mit Zitat antworten Zitat