AGB  ·  Datenschutz  ·  Impressum  







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

ActiveX-DLL oder ActiveX-Exe?

Ein Thema von tgoessi · begonnen am 1. Jun 2005 · letzter Beitrag vom 3. Jun 2005
Antwort Antwort
tgoessi

Registriert seit: 31. Mai 2005
34 Beiträge
 
Delphi 5 Enterprise
 
#1

ActiveX-DLL oder ActiveX-Exe?

  Alt 1. Jun 2005, 16:23
Hallo Zusammen

Ich habe folgendes Problem:

Aus einer unserer Anwendung heraus muss ich Informationen einer Fremdapplikation über ActiveX zur Verfügung stellen. Unsere Anwendung soll aber aus kompatibilitätsgründen kein ActiveX-Interface zur Verfügung stellen.

Deshalb wähle ich einen COM-Server, der als Interface fungiert und über die ActiveX-Schnittstellen verfügt. Unsere Anwendung schreibt die Information via ActiveX in den COM-Server, welcher diese dann der Fremdapplikation auch über AktiveX zur Verfügung stellt.

Diese Variante hat ausserdem den Vorteil, dass unsere Anwendung nicht von der Fremdapplikation gestartet werden kann (was in unserem Fall ein Problem darstellen würde). Es wird dann der COM-Server als Interface gestartet.

Durch den Datenaustausch im Interface darf dazu nur eine Instanz des COM-Servers gestartet werden, damit die Daten, die über das ActiveX-Input-Schnittstelle geladen werden von der anderen Seite auch wieder über die ActiveX-Output-Schnittstelle sichtbar sind.

Nun kommt die eigentliche Frage:
Kann ich eine ActiveX-DLL für das Interface verwenden (einfachere Registrierung) oder muss ich eine ActiveX-EXE definieren?
Welches ClassInstancing muss ich verwenden cSingleInstance oder cMultiInstance?

Danke für Eure Tips
Tom
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#2

Re: ActiveX-DLL oder ActiveX-Exe?

  Alt 1. Jun 2005, 16:33
deine frage hast dir quasi grad selbst beantwortet...
jedenfalls den einen teil

Zitat:
Kann ich eine ActiveX-DLL für das Interface verwenden (einfachere Registrierung) oder muss ich eine ActiveX-EXE definieren?
kannst du, musst du nicht.


Zitat:
Welches ClassInstancing muss ich verwenden cSingleInstance oder cMultiInstance?
Zitat:
Durch den Datenaustausch im Interface darf dazu nur eine Instanz des COM-Servers gestartet werden, damit die Daten, die über das ActiveX-Input-Schnittstelle geladen werden von der anderen Seite auch wieder über die ActiveX-Output-Schnittstelle sichtbar sind.
  Mit Zitat antworten Zitat
tgoessi

Registriert seit: 31. Mai 2005
34 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: ActiveX-DLL oder ActiveX-Exe?

  Alt 1. Jun 2005, 17:17
Das funktioniert jetzt aber bei mir nicht wie gewünscht.
Wenn ich ciSingleInstance wähle, erhalte ich die Daten nicht wie gewünscht über die DLL.
Bei einer ActiveX-Exe wird eine zweite Instanz gestartet.

Die Instanzierung ist wie folgt:
Delphi-Quellcode:
  TAutoObjectFactory.Create(ComServer, TInterfaceData, Class_InterfaceData,
    ciSingleInstance, tmApartment);
Ist da was falsch?

Tom
  Mit Zitat antworten Zitat
shmia

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

Re: ActiveX-DLL oder ActiveX-Exe?

  Alt 1. Jun 2005, 18:58
Zitat von tgoessi:
Aus einer unserer Anwendung heraus muss ich Informationen einer Fremdapplikation über ActiveX zur Verfügung stellen. Unsere Anwendung soll aber aus kompatibilitätsgründen kein ActiveX-Interface zur Verfügung stellen.
Das verstehe ich nicht so ganz, aber man kann eine Anwendung mit Automatisierungsschnittstelle so bauen,
dass keine Benutzeroberfläche sichtbar wird, wenn die Anwendung über COM angestartet wurde:
Delphi-Quellcode:
begin
  Application.Initialize;
  if (Pos('Embedding', ParamStr(1)) <> 0) then
  begin
     Application.ShowMainForm := False;
  end;
  Application.Title := 'AppTitle';
  Application.CreateForm(TFrmMain, FrmMain);
  Application.Run;
end.
Andreas
  Mit Zitat antworten Zitat
tgoessi

Registriert seit: 31. Mai 2005
34 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: ActiveX-DLL oder ActiveX-Exe?

  Alt 2. Jun 2005, 10:16
Die Anwendung darf nicht von der ActiveX gestartet werden, da sie von einer Host-Anwendung mit Parametern gestartet werden muss, sonst funktioniert es nicht richtig.
Deshalb der COM-Server als Interfaceobjekt.

Zitat von shmia:
Zitat von tgoessi:
Aus einer unserer Anwendung heraus muss ich Informationen einer Fremdapplikation über ActiveX zur Verfügung stellen. Unsere Anwendung soll aber aus kompatibilitätsgründen kein ActiveX-Interface zur Verfügung stellen.
Das verstehe ich nicht so ganz, aber man kann eine Anwendung mit Automatisierungsschnittstelle so bauen,
dass keine Benutzeroberfläche sichtbar wird, wenn die Anwendung über COM angestartet wurde:
Delphi-Quellcode:
begin
  Application.Initialize;
  if (Pos('Embedding', ParamStr(1)) <> 0) then
  begin
     Application.ShowMainForm := False;
  end;
  Application.Title := 'AppTitle';
  Application.CreateForm(TFrmMain, FrmMain);
  Application.Run;
end.
  Mit Zitat antworten Zitat
tgoessi

Registriert seit: 31. Mai 2005
34 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: ActiveX-DLL oder ActiveX-Exe?

  Alt 3. Jun 2005, 10:29
Ich habe nun einige Tests gemacht. Mit einer ActiveX-DLL funktioniert es definitiv nicht, ich muss eine ActiveX-Exe verwenden.
Offenbar läuft die DLL im Speicherraum des aufrufenden Prozesses, daher kann man nicht von zwei unterschiedlichen Prozessen auf dieselbe DLL zugreifen. Es werden in jedem Fall zwei Instanzen mit unterschiedlichem Adressraum gestartet.

Das zur Info
Tom

Zitat von shmia:
Zitat von tgoessi:
Aus einer unserer Anwendung heraus muss ich Informationen einer Fremdapplikation über ActiveX zur Verfügung stellen. Unsere Anwendung soll aber aus kompatibilitätsgründen kein ActiveX-Interface zur Verfügung stellen.
Das verstehe ich nicht so ganz, aber man kann eine Anwendung mit Automatisierungsschnittstelle so bauen,
dass keine Benutzeroberfläche sichtbar wird, wenn die Anwendung über COM angestartet wurde:
Delphi-Quellcode:
begin
  Application.Initialize;
  if (Pos('Embedding', ParamStr(1)) <> 0) then
  begin
     Application.ShowMainForm := False;
  end;
  Application.Title := 'AppTitle';
  Application.CreateForm(TFrmMain, FrmMain);
  Application.Run;
end.
[/quote]
  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 17:39 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