Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Daten/Speicherbereiche zwischen applikationen austauschen (https://www.delphipraxis.net/14237-daten-speicherbereiche-zwischen-applikationen-austauschen.html)

themason26 5. Jan 2004 13:06


Daten/Speicherbereiche zwischen applikationen austauschen
 
hallo,

ich suche eine möglichkeit (wenns geht nur windows api-funktionen) mit denen ich zwischen zwei laufenden applikationen daten (binär wie text, z.b. audio-streams) austauschen kann. es würde mir schon reichen das ich einen speicher-bereich alloziere und diesen für eine weitere (mehrere) anwendungen sharen kann. die übertragung sollte in zwei richtungen funktionieren. tcp/ip (mit localhost) ist mir zu overhead-lastig, datei-schreiben-lesen dürfte zu langsam sein, und die daten per send/post-message zu übertragen ist auch etwas gewagt. hat jemand eine dazu eine lösung ? (hab gehört mit den ATOMS soll was zu machen sein)

gruß
mason

Luckie 5. Jan 2004 14:49

Re: Daten/Speicherbereiche zwischen applikationen austausche
 
WM_COPYDATA für kleine Datenmengen und Memmory Mapped Files für größere würde ich vorschlagen. Oder du kuckst mal hier rein: http://www.luckie-online.de/tutorials/assarbad/ in das Hook Tutorial, weleches auch IPC behandelt.

Chewie 5. Jan 2004 14:52

Re: Daten/Speicherbereiche zwischen applikationen austausche
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn du Klassen magst, ich hab mal angefangen, eine MemoryMappedFile-Klasse zu basteln. Wenn du willst, kannst du sie weiterbasteln.

themason26 5. Jan 2004 15:21

Re: Daten/Speicherbereiche zwischen applikationen austausche
 
Zitat:

Zitat von Luckie
WM_COPYDATA für kleine Datenmengen und Memmory Mapped Files für größere würde ich vorschlagen. Oder du kuckst mal hier rein: http://www.luckie-online.de/tutorials/assarbad/ in das Hook Tutorial, weleches auch IPC behandelt.

erstmal danke für die infos... :thuimb:
Also mit memorymapped (also "dateien-aufmachen-reinschreiben-zumachen-auslesen" wenn ich es richtig verstanden hab) fällt flach da ich mich beim senden der daten in einer audio-routine befinde (die mit 48/96khz dahinrauscht), welche meherere streams (max. 16 PRO audio-applikation :shock: ) gleichzeitig an eine Scope-Applikation schicken (quasi als "Debug"-Möglichkeit :roll: ) soll und ich nicht pro block jeweils eine neue datei kreieren/aufmachen kann. (Blockgröße ist system bzw. soundkarten-abhängig). Ich habe es selbst mal mit einer selbstgebastelten Klasse versucht die die Daten per SendMessage übermittelt. Funzt auch ... wenn man einen 2gHz Prozessor hat und nur einen audio-stream überträgt :wall: .
Ich meine es muß ja auch mit Windows-APIs eine Möglichkeit geben.
Also GlobalAlloc (mit handle und pointer) hat nichts gebracht, und direkt in eine Applikation schreiben hat Windows (bzw. die MMU) ja niet so gerne.

Chewie 5. Jan 2004 17:27

Re: Daten/Speicherbereiche zwischen applikationen austausche
 
Zitat:

Zitat von themason26
Also mit memorymapped (also "dateien-aufmachen-reinschreiben-zumachen-auslesen" wenn ich es richtig verstanden hab)

Nicht ganz. Das besondere ist ja, dass die Datei nicht existiert sondern nur im Arbeitsspeicher liegt. Bei einer MMF allozierst dir einfach einen Speicherblock mit der Größe deiner Wahl im oberen Teil des 32Bit-Speicherbereichs (Kernelspeicher), der wegen der gemeinsamen Nutzung dieses Teils von allen Prozessen zugänglich ist.

themason26 5. Jan 2004 17:42

Re: Daten/Speicherbereiche zwischen applikationen austausche
 
Aaah so !

Des ist ja mal richtig interessant. Also die Tiefen der API-Funktionen bieten ja echt ne ganze ecke an möglichkeiten. :-D
Will nur hoffen das ich jemandem auch mal so schnell und kompetent helfen kann. :roll:

gruß
rene


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