Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi 'Prozessübergreifender' Funktionsaufruf (https://www.delphipraxis.net/23419-prozessuebergreifender-funktionsaufruf.html)

c113plpbr 2. Jun 2004 18:56


'Prozessübergreifender' Funktionsaufruf
 
Folgendes:
Ich habe 2 (verschiedene) Programme. In einem ist eine Funktion eingebaut, die das andere Programm aufrufen soll.
Wie stelle ich das an, bzw. geht das überhaupt?

(kommunikation zwischen den beiden programmen ist kein problem, d.h. ich kann z.B. pointer übertragen, o.ä.)

ciao und thx, Philipp

Bernhard Geyer 2. Jun 2004 19:01

Re: 'Prozessübergreifender' Funktionsaufruf
 
Dafür gibt es viele Möglichkeiten:

1, Du erstellst für das aufzurufende Programm eine COM/Automatisierungsschnittstelle
Vorteil: Programmiersprachenunabhängig
Nachteil: Schnittstelle muß registriert werden (Admin-Rechte), nur Windows

2, Du definierst Windows-Messages, die für das Hauptfenster aufgerufen werden
Nachteil: Eingeschränkt bezüglich übergabe von größeren Daten

3, Du erstellst Named-Pipes oder ähnliches Kommunikationskanäle
Nachteil: Evtl. Firewall-"Gefährtet"

Christian Seehase 2. Jun 2004 19:03

Re: 'Prozessübergreifender' Funktionsaufruf
 
Moin Philipp,

such' hier mal nach Hier im Forum suchenRegisterWindowMessage
Da müsstest Du einige Beispiele finden, wie Du mit Hilfe selbstdeklarierter Messages Programme miteinander kommunizieren lassen kannst.

BTW:
Wenn Du schon Pointer überträgst, kannst Du deren Wert ja auch als Kommando für den Aufruf bestimmter Funktionen benutzen.

c113plpbr 2. Jun 2004 19:13

Re: 'Prozessübergreifender' Funktionsaufruf
 
Alles was mit Fenstern und Fensternachrichten zu tun hat ist in diesem Fall unbrauchbar, da eigentlich eine spezielle dll (von der anwendung unabhängig) mit einer anwendung 'kommuniziert'. Da diese Kommunikation *sehr* schnell ablaufen muss, dachte ich, dass das vielleicht callback-funktion-ähnlich funktionieren könnte, da die funktion auch noch einiges zurückgeben muss.

Aber ich denke, dass das nicht so funktionieren wird, wie ich mir das vorstelle ... muss mir wohl nen anderen weg suchen ... falls jemand noch vorschläge hat, nur her damit!

Bernhard Geyer 2. Jun 2004 20:01

Re: 'Prozessübergreifender' Funktionsaufruf
 
Prozessübergreifende Kommunikation ist unter Windows immer um Welten langsamer als ein prozessinterner aber threadübergreifende Kommunikation, da ein nötiger Kontextwechsel immer einiges an Zeit benötigt.

Auch ist es Problematisch zwischen Prozessen mit Pointern zu arbeiten, da diese umgesetzt werden müssen.

Wenn die Funktion eh in 'ner DLL ist, so ist die COM-Lösung evtl. ganz brauchbar. Diese kann als In-Prozess-Server realisiert weden und läuft damit im Prozessraum des Anwendung (und ist damit *ziemlich* schnell. Fast so schnell wie ein normaler DLL-Aufruf).

c113plpbr 2. Jun 2004 20:26

Re: 'Prozessübergreifender' Funktionsaufruf
 
Ich werds mir mal anschauen ...
Gibts zu COM irgendwo nen gutes tutorial?

Bernhard Geyer 2. Jun 2004 21:44

Re: 'Prozessübergreifender' Funktionsaufruf
 
Tutorial kenn ich aktuell keins, aber m.E. die Bibel dafür im deutschsprachigen Raum: COM, DCOM, COM+ mit Delphi von A. Kosch. Behandelt so ziemlich alles zu dem Thema


Alle Zeitangaben in WEZ +1. Es ist jetzt 09: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