Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: wie auf andere interfaces einer COM-dll zugreifen?

  Alt 26. Apr 2010, 16:32
Du kannst von Ausserhalb einer ActiveX-DLL nur Interfaces erzeugen für die es auch eine CoClass gibt.
Es kann dann viele weitere Interfaces geben, an die du aber nur indirekt herankommst.

Dazu gibt es zwei Möglichkeiten:
1.) über eine Funktion bekommst du den Interface-Zeiger eines anderen Objekts.
ein kleines (fiktive) Beispiel:
Delphi-Quellcode:
var
  winlist : IWindowList;
  win : IWindow;
  i : integer;
begin
  winlist := CoWindowList.Create;
  for i:=0 to winlist.count-1 do
  begin
    // hier passierts: winlist gibt dir quasi "freiwillig" einen Interface-Zeiger auf ein anderes Objekt
    win := winlist.Items[i];
  end;
2.) über Umwandlung des Interface in einen anderen Typ
Delphi-Quellcode:
var
  winlist : IWindowList;
  x : IIEWindowList3;
begin
  winlist := CoWindowList.Create;
  x := winlist as IWindowList3
Man kann also ein Interface in ein anderes Interface eintauschen.
Delphi ruft dazu verborgen im Hintergrund die Methode QueryInterface() auf.

In deinem Fall bestehen sehr gute Chancen, dass du ein IXRawfile Interface problemlos in ein IXRawfile4 umwandeln kannst.
Andreas
  Mit Zitat antworten Zitat