AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi wie auf andere interfaces einer COM-dll zugreifen?
Thema durchsuchen
Ansicht
Themen-Optionen

wie auf andere interfaces einer COM-dll zugreifen?

Ein Thema von maz · begonnen am 26. Apr 2010 · letzter Beitrag vom 27. Apr 2010
Antwort Antwort
maz

Registriert seit: 19. Mär 2007
Ort: Wien
4 Beiträge
 
#1

wie auf andere interfaces einer COM-dll zugreifen?

  Alt 26. Apr 2010, 15:58
Hallo leute,
habe hier eine dll die mit regsvr32 als com obj registriert ist. ich habe mir von delphi die TLB erstellen lassen und binde diese mit uses ein. das funktioniert alles super, ich kann auch auf die methoden eines interfaces zuggreifen. jetzt hat aber diese dll (wenn ich mit delphi reinschau) mehrere interfaces, und ich bräuchte eine methode die unter einem anderen interface aufgelistet wird. wie kann ich denn darauf zugreifen?

der einzige type der in der TLB zu finden ist, ist dieser:
Delphi-Quellcode:
// *********************************************************************//
// OLE Server Proxy class declaration
// Server Object : TMSFileReader_XRawfile
// Help String : MSFileReader XRawfile Class
// Default Interface: IXRawfile
// Def. Intf. DISP? : No
// Event Interface:
// TypeFlags : (2) CanCreate
// *********************************************************************//
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
  TMSFileReader_XRawfileProperties= class;
{$ENDIF}
  TMSFileReader_XRawfile = class(TOleServer)
  private
    FIntf: IXRawfile;
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
    FProps: TMSFileReader_XRawfileProperties;
in der dll gibt es aber noch das interface "IXRawfile4" das die Methoden parat hält, die ich gerne nutzen möchte. jemand eine idee? danke für jeden tipp.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 26. Apr 2010, 16:29
Das scheint der einzige Typ zu sein, der registriert wurde.
Markus Kinzler
  Mit Zitat antworten Zitat
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
maz

Registriert seit: 19. Mär 2007
Ort: Wien
4 Beiträge
 
#4

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

  Alt 27. Apr 2010, 08:55
für alle die es interessiert, mit SIMA's 2ter Lösung hats geklappt. danke! die erste hab ich nicht probiert. zu erwähnen wäre noch das das besagte xrawile3 interface das "normale" xrawfile interface als parent hatte.
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz