AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Supports verständnis problem

Ein Thema von EWeiss · begonnen am 30. Mai 2014 · letzter Beitrag vom 30. Mai 2014
 
EWeiss
(Gast)

n/a Beiträge
 
#1

Supports verständnis problem

  Alt 30. Mai 2014, 07:42
Ich erstelle ein Com Objekt auf diese weise.

Delphi-Quellcode:
function TWMPHelper.InitVis(VisGUID: TGuid; PresetIndex: Integer): Bool;
var
  ObjInstance : IUnknown;

begin
  Result := False;

    if CoCreateInstance(VisGUID, nil, CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER,
      IUnknown, ObjInstance) = S_OK then
    begin
      // Versuch auf IWmpEffects zu casten. Bei einem Fehlschlag,
      // wird Nil zurück gegeben und die ObjInstance
      // unterstützt das Interface IWmpEffects nicht.
      _IWmpEffects := ObjInstance as IWMPEffects;

      if Assigned(_IWmpEffects) then

      // Versuch auf IWmpEffects2 zu casten. Bei einem Fehlschlag,
      // wird Nil zurück gegeben und die ObjInstance
      // unterstützt das Interface IWmpEffects2 nicht.
      if Supports(_IWmpEffects, IID_IWMPEffects2, _IWmpEffects2) then
        _IWmpEffects2 := ObjInstance as IWmpEffects2;

      // wird das Interface IWmpEffects2 unterstützt, brauchen
      // wir das Interface IWmpEffects nicht mehr.
      if Assigned(_IWmpEffects2) then
        _IWmpEffects := nil;

      // Erstes Preset setzen. Das muss sein da es ansonsten bei
      // einigen Visualisierungen zu einer AccessViolation Exception führt.
      SetCurrentPreset(PresetIndex);

      Result := True;
    end;

end;
Wenn ich auf das IWmpEffects2 caste funktioniert es auf verschiedener weise
warum das so ist da komme ich nicht hinter.

Supports(_IWmpEffects, IID_IWMPEffects2, _IWmpEffects2) funktioniert!

aber auch das!
Supports(_IWmpEffects, IID_IWMPEffects2, ObjInstance)

ObjInstance wäre in den fall dann IWmpEffects.

und das geht ebenfalls
Supports(_IWmpEffects, IID_IWMPEffects, ObjInstance) Was mache ich falsch?
Oder warum führen alle Aufrufe zum gleichen Ergebnis?

Sorry gehört zum gleichen Thema..

Kann man CoCreateInstance irgendwo freigeben ?
Denn die eine Visualisierung funktioniert nicht wenn ich nicht vorher CoUninitialize aufrufe.

EDIT:
Hab es nochmal korrigiert.

gruss

Geändert von EWeiss (30. Mai 2014 um 08:02 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz