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?