Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi 1 DLL für 2 EXEn ? (https://www.delphipraxis.net/71233-1-dll-fuer-2-exen.html)

arbu man 11. Jun 2006 17:27


1 DLL für 2 EXEn ?
 
Hi,

ich habe 2 Exen die unter einander kommunizieren sollen. Damit das geht habe ich eine DLL die von Exe1 geladen wird, das Handle dieser DLL wird dann beim ausführen an Exe2 weitergegeben, wenn Exe2 nun versucht mit GetProcAddress einen Pointer auf eine Funktion zu erzeugen ist dieser nil. Was läuft da falsch ?

Dax 11. Jun 2006 17:30

Re: 1 DLL für 2 EXEn ?
 
Du versuchst eine Adresse in einer DLL zu bekommen, die dein Prozess nicht geladen hat... Das muss schiefgehen ;)

Wenn du was übergeben kannst, kuck dir doch mal Pipes an.

Bernhard Geyer 11. Jun 2006 17:34

Re: 1 DLL für 2 EXEn ?
 
Auch schon mal davon gehört das Exen unter Win32 komplett getrennte Adressräume haben? Die gilt auch für "normalen" Datenspeicher in gemeinsam geladenen DLL's.

Alternativen wären z.B.
- WM_COPYDATA
- eine Exe mit einer Automatisierungsschnittstelle ausstatten

arbu man 11. Jun 2006 17:40

Re: 1 DLL für 2 EXEn ?
 
Zitat:

Auch schon mal davon gehört das Exen unter Win32 komplett getrennte Adressräume haben? Die gilt auch für "normalen" Datenspeicher in gemeinsam geladenen DLL's.
Ja, ich dache das könnte ich durch die DLL umgehen :(,
aber das würde auch heißen mit einen Pointer uas Exe1 kann ich in Exe2 gar nichts anfangen oder ???

Was sind Pipes ? OH findet nichts DP viel aber nichts brauchabres.

eine Exe mit einer Automatisierungsschnittstelle ausstatten nur Wie ???

Bernhard Geyer 11. Jun 2006 17:48

Re: 1 DLL für 2 EXEn ?
 
Zitat:

Zitat von arbu man
Ja, ich dache das könnte ich durch die DLL umgehen :(,

Es gibt die möglich gemeinsam genutzten Speicher vom BS anzufordern. Weis aber gerade den Funktionsnamen nicht.

Zitat:

Zitat von arbu man
aber das würde auch heißen mit einen Pointer uas Exe1 kann ich in Exe2 gar nichts anfangen oder ???

Bingo. Eine Adresse $F2F2F2F in Exe A welche auf einem Datenbereich zeigt ist in Exe 2 eine Ausführbarer bereich. Die Adressen sind ja nur logische Adressen und das BS setzt diese mit Hilfe von "Umsetzlisten" und dem virtuellen Speichermanager in der CPU (man ist das Studium schon lange wieder her) auf die physikalische Adresse um.

Zitat:

Zitat von arbu man
eine Exe mit einer Automatisierungsschnittstelle ausstatten nur Wie ???

In Delphi Menu Datei/Neu/Weitere... auswählen, Seite ActiveX, Eintrag Automatierungsobjekt und bevor du es einsetzt erst mal ein Buch/Tutorial über COM/ActiveX durchlesen um die Grundlagen zu verstehen.

arbu man 11. Jun 2006 17:58

Re: 1 DLL für 2 EXEn ?
 
Zitat:

Zitat von Bernhard Geyer
Zitat:

Zitat von arbu man
eine Exe mit einer Automatisierungsschnittstelle ausstatten nur Wie ???

In Delphi Menu Datei/Neu/Weitere... auswählen, Seite ActiveX, Eintrag Automatierungsobjekt und bevor du es einsetzt erst mal ein Buch/Tutorial über COM/ActiveX durchlesen um die Grundlagen zu verstehen.

Dann blib ich doch lieber bei WM_COPYDATA das kann ich wenigstens :)

Danke an alle :)

himitsu 11. Jun 2006 18:02

Re: 1 DLL für 2 EXEn ?
 
Zitat:

Zitat von Bernhard Geyer
Es gibt die möglich gemeinsam genutzten Speicher vom BS anzufordern. Weis aber gerade den Funktionsnamen nicht.

Ging das nicht auch per GlobalMem?


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