![]() |
'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 |
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" |
Re: 'Prozessübergreifender' Funktionsaufruf
Moin Philipp,
such' hier mal nach ![]() 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. |
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! |
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). |
Re: 'Prozessübergreifender' Funktionsaufruf
Ich werds mir mal anschauen ...
Gibts zu COM irgendwo nen gutes tutorial? |
Re: 'Prozessübergreifender' Funktionsaufruf
Tutorial kenn ich aktuell keins, aber m.E. die Bibel dafür im deutschsprachigen Raum:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz