Prozedur einer anderen Andwendung aufrufen
Hallo,
ich habe hier folgendes Problem. Ich habe 2 Anwendungen, nennen wir sie App1 und App2. App1 übergibt per Filemapping Daten an App2. Mit übergeben werden soll dabei ein Zeiger auf eine Callbackmethode. Wie muss ich nun diese Callbackmethode anlegen damit App2 diese Methode ausführen kann? Hier 'n Stück Code dazu:
Code:
Sobald ich die CallBack(...) in App2 aufrufe, kommt es zu einer Schutzverletzung!?
type
TCallBackFunktion = function (Param: Integer; var Result: Double): Byte; stdcall; TMyData = record dummy: Integer; Callback: TCallBackFunction; end; Ich habe schon mehrmals Callbacks für Funktionen zwischen DLLs und Programmen verwendet. Gibt es da einen Unerschied wenn ich mit 2 Programmen arbeite? Hat vielleicht jemand eine Idee für dieses Problem? Mfg mrsiemens |
Re: Prozedur einer anderen Andwendung aufrufen
Da würde ich der Einfachheit halbar mit Messages arbeiten.
Gruss, Fabian |
Re: Prozedur einer anderen Andwendung aufrufen
Messages machen dies aber auf keine Fall leichter :(
Vielleicht noch folgendes: Die Callbackmethode dient dazu eine sehr grosse Anzahl an Funktionswerten zu berechnen. In App1 ist ein Math.Parser integriert - in App2 nicht. App2 soll für eine Reihe gegebener Funktionen eine Isofflächengrafik zeichnen und lässt die Funktionswerte via Callbackfunktion von App1 berechnen. |
Re: Prozedur einer anderen Andwendung aufrufen
Generell bietet das PE32 Dateiformat die Möglichkeit, dass Anwendungen wie DLL's Funktionen exportieren können. Sie sind aber dafür eigentlich nicht gedacht, da du zwei Adressräume hast und die unter 32-Bit Windows strikt von einander getrennt werden. Inter Process Communication läßt sich leichter mit einer gemeinsamen DLL, MMF oder Messages besser und leichter realisieren. Zu IPC wirf mal einen Blick in das DLL Tutorial von Assarabd: http://www.luckie-online.de/Delphi/Importe/Assarbad/
|
Re: Prozedur einer anderen Andwendung aufrufen
Danke :)
Ich habe mir das ganze aber schon angeschaut. Stichwort gemeinsame DLL, wenn ich eine DLL jeweils in einer Anwendung lade, dann habe ich doch 2 Instanzen dieser DLL. Dann kann ich doch genausowenig gemeinsam darauf zugreifen!? Oder seh ic hdas falsch? |
Re: Prozedur einer anderen Andwendung aufrufen
Zitat:
Damit kann man dann "Nachrichten" in Form von Funktionsaufrufen (welche nachricht und antwort-parameter besitzen) "versenden". Das läuft recht gut, und ich verwende es immer wieder gerne. Die kostenlose version der MadCodeHook-Lib ist allerdings ohne quellcode, und sie darf nur für den nicht-kommerziellen bereich eingesetzt werden. ciao, Philipp |
Re: Prozedur einer anderen Andwendung aufrufen
Gut danke - ich schau mir das mal an...
|
Re: Prozedur einer anderen Andwendung aufrufen
Zitat:
eine Automatisierungschnittstelle verpassen. (AnwendungA: Automatisierungs-Client , AnwendungB: Automatisierungs-Server) Du begibst dich damit auf das Feld COM/DCOM/ActiveX. Damit kann man jedes Objekt in deinen Anwendungen über ein Interface "nach aussen legen". Du hast sehr grosse Möglichkeiten, musst aber auch einiges lernen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 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