Einzelnen Beitrag anzeigen

Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#1

ActiveX-Komponente über TWebBrowser geladen - Eventinterface

  Alt 13. Jan 2005, 17:23
Ich habe eine ActiveX-Komponente (kann mit der Shockwave-Flash-Komponente nachvollzogen werden), welche ich über den IE-Wrapper TWebBrowser bedienen will.
Dort lade ich ein Dokument mittels
MyWebBrowser.Navigate(Flashfile); Nun suche ich mir die Flash-Instanz zur geladenen Flash-Instanz:
Delphi-Quellcode:
function GetShockPlayer(WebBrowser: TWebBrowser): IShockwaveFlash;
var
  intf: IDispatch;
  doc: IHTMLDocument2;
  collection: IHTMLElementCollection;
begin
  result := nil;
  doc := WebBrowser.Document as IHTMLDocument2;

  collection := doc.embeds;
  if collection.length > 0 then
  begin
    intf := collection.item(0, 0);
    result := intf as IShockwaveFlash;
  end;
end;
Für diese Player-Instanz versuche ich mich an die Event-Schnittstelle zu hängen:
Delphi-Quellcode:
var
  player: IShockwaveFlash;
  ShockEvents: TShockwaveFlashObjectsIShockwaveFlashEvents;
begin
  player := GetShockPlayer(WebBrowser);

  ShockEvents := TShockwaveFlashObjectsIShockwaveFlashEvents.Create(self);
  ShockEvents.Connect(player);
end;
Die TShockwaveFlashObjectsIShockwaveFlashEvents-Klasse habe ich das EventSinkImp-Importiert.

Jedoch bekomme ich die Fehlermeldung "Schnittstelle nicht unterstützt"?
Was ist falsch? Wenn ich die Event-Klasse mit einer per Delphi ActiveX-Import generierten Flash-Instanz verbinde funktioniert es. Was ist anders, wenn der Internet Explorer dazwischen geschaltet wird?

Ich habe ein Beispielprojekt angehängt (Hoffentlich alles dabei )
Angehängte Dateien
Dateityp: zip flashevents_447.zip (14,6 KB, 14x aufgerufen)
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat