AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Zugriff auf einen COM-Server aus einem Delphi-Dienst
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf einen COM-Server aus einem Delphi-Dienst

Offene Frage von "Bernhard Geyer"
Ein Thema von DelphiApostel · begonnen am 15. Dez 2006 · letzter Beitrag vom 2. Mär 2011
 
DelphiApostel

Registriert seit: 12. Apr 2005
10 Beiträge
 
Delphi 2010 Enterprise
 
#1

Zugriff auf einen COM-Server aus einem Delphi-Dienst

  Alt 15. Dez 2006, 11:19
Hallo ihr Lieben,

ich habe ein Problem beim Zugriff auf einen selbstgeschriebenen COM-Server aus einem Delphi-Dienst heraus:

1) ich habe einen "out-of-process" COM-Server (EXE-Datei) erstellt mit einer kleinen Funktion, die einfach nur eine Meldung in einer Memo-Box ausgibt.

2) danach erstellte ich einen Windows-Dienst (COM-Client) und hab dann die Typbibliothek importiert (Unit erstellt)

3) bei Bedarf wird dann im Dienst das entsprechende Interface (Objekt) erzeugt und die Funktion des COM-Servers (der Schnittstelle) aufgerufen.
Quellcode des COM-Clients (wie ihr sehen könnt, habe ich unterschiedliche Varianten ausprobiert):

Delphi-Quellcode:
procedure SendMsg(Nachricht:PChar);
var
 MyListener:ITDA_Listener;
 //MyListener:TTDA_Listener;
 hr: HRESULT;
begin
  CoInitialize(nil);
  OleInitialize(nil);
  //MyListener:=CreateCOMObject(Class_TDA_Listener) as ITDA_Listener;
  //MyListener:=CoTDA_Listener.Create;
  //MyListener:=TTDA_Listener.Create(nil);
  hr := CoCreateInstance(Class_TDA_Listener, nil, CLSCTX_LOCAL_SERVER, IID_ITDA_Listener, MyListener);
  MyListener.SendMsg('HALLO');
  //FreeAndNil(MyListener);
  CoUnInitialize;
  OleUnInitialize;
end;
Dabei wird keine Fehlermeldung angezeigt. Das Objekt (Interface) wird auch richtig erzeugt. Nur wird auf dem COM-Server keine Meldung in der Memo-Box angezeigt.

Wenn ich jetzt die gleichen Anweisungen in einer normalen EXE-Datei (Anwendung) ausführe, dann klappt das auch. Ich bekomme dann einen neuen Eintrag in der Memo-Box.
Woran liegt das? Gibt es irgendwelche Einschränkungen, die ich nicht beachtet habe? Der Dienst läuft unter dem gleichen Admin-Konto, wie die COM-Server Applikation auch.

Der COM-Server ist ein Programm (in meinem Fall Listener.exe), welches alle Events/Ereignisse des Windows-Dienstes (COM-Client) in der Memo-Box anzeigt. Damit ich keine Textdateien (Log-Dateien) oder überflüssige Event-Log Einträge erstellen muss...

Weitere Informationen zu meinem COM-Server:
- Instantiierung: mehrere Instanzen
- Threading-Modell: Apartment
- Schnittstelle ist als "Ole-Automatisierung" deklariert


Quellcode des COM-Servers:
Delphi-Quellcode:
unit InterfaceListener;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses
  Windows, ActiveX, Classes, ComObj, Listener_TLB, StdVcl;

type
  TTDA_Listener = class(TTypedComObject, ITDA_Listener)
  protected
    function SendMsg(const WMsgText: WideString): HResult; stdcall;
    {ITDA_Listener-Methoden hier deklarieren}
  end;

implementation

uses ComServ,Hauptunit;


function TTDA_Listener.SendMsg(const WMsgText: WideString): HResult;
begin
   Form1.Nachrichten.Lines.Add(WMsgText);
end;


initialization
  TTypedComObjectFactory.Create(ComServer, TTDA_Listener, Class_TDA_Listener,
    ciMultiInstance, tmApartment);
end.

PS.: damit es kein Ärger gibt: die gleiche Frage habe ich auch in diesem Forum gestellt:
http://www.delphi-forum.de/topic_Zug...nst_67670.html

Vielen Dank schon mal für Eure Hilfe
MfG
Delphi-Apostel
  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:33 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