AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Prozedur einer anderen Andwendung aufrufen
Thema durchsuchen
Ansicht
Themen-Optionen

Prozedur einer anderen Andwendung aufrufen

Ein Thema von mrsiemens · begonnen am 13. Dez 2004 · letzter Beitrag vom 14. Dez 2004
Antwort Antwort
mrsiemens

Registriert seit: 8. Nov 2004
13 Beiträge
 
#1

Prozedur einer anderen Andwendung aufrufen

  Alt 13. Dez 2004, 22:29
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:
type
TCallBackFunktion = function (Param: Integer; var Result: Double): Byte; stdcall;

TMyData = record
 dummy: Integer;
 Callback: TCallBackFunction;
end;
Sobald ich die CallBack(...) in App2 aufrufe, kommt es zu einer Schutzverletzung!?

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
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Prozedur einer anderen Andwendung aufrufen

  Alt 13. Dez 2004, 23:05
Da würde ich der Einfachheit halbar mit Messages arbeiten.

Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
mrsiemens

Registriert seit: 8. Nov 2004
13 Beiträge
 
#3

Re: Prozedur einer anderen Andwendung aufrufen

  Alt 13. Dez 2004, 23:09
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Prozedur einer anderen Andwendung aufrufen

  Alt 13. Dez 2004, 23:12
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/
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mrsiemens

Registriert seit: 8. Nov 2004
13 Beiträge
 
#5

Re: Prozedur einer anderen Andwendung aufrufen

  Alt 13. Dez 2004, 23:30
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?
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Prozedur einer anderen Andwendung aufrufen

  Alt 14. Dez 2004, 17:13
Zitat von mrsiemens:
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!?
Das ist richtig so, du hast da keine direkten zugriffsmöglichkeiten. Aber es gibt eine recht gute methode, und zwar sind das die IPC-Funktionen von Madshi, zu finden in der MadCodeHook-Library, welche sich in der MadCollection auf http://www.madshi.net/ finden lässt.

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
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
mrsiemens

Registriert seit: 8. Nov 2004
13 Beiträge
 
#7

Re: Prozedur einer anderen Andwendung aufrufen

  Alt 14. Dez 2004, 18:40
Gut danke - ich schau mir das mal an...
  Mit Zitat antworten Zitat
shmia

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

Re: Prozedur einer anderen Andwendung aufrufen

  Alt 14. Dez 2004, 18:53
Zitat von mrsiemens:
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?
Da du anscheinend beide Anwendungen programmierst, kannst du auch beiden Anwendungen
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.
Andreas
  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 06:27 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