Autor | Thema: DDE- Datentausch zwischen Progr. | | Datum:29.12.01 20:16 
(KF.Postfach@gmx.net) | |
Hallo
Zum Thema DDE habe ich eine Frage
Wie kann ich zwischen zwei unabhänig von einander
laufenden Profanprogrammen Daten austauschen.
Mit Daten meine ich Variablen.(integer,float,string)
Wer kann mir zu diesem Thema weiterhelfen.
Die Dokumentation im Handbuch ist dafür etwas zu dürftig.
Gruß
Klemens
|
| | Datum:19.01.02 17:07 
(ahebeisen@alpha-trier.de) | |
Nimm doch einfach die Zwischenablage als Schnittstelle und gib dabei den Variablennamen inkl Wert durch.
Das kannst Du ja z.B. durch "|" trennen...
achim
|
| | Datum: 20.01.02 11:50 
(schmidts@flat2serv.de) | |
Hallo,
im Installationspacket vom PrfPad (http://www.prfpad.de) befindet sich im Unterverzeichnis "Vorlagen" eine Datei namens "SharedMem". Damit lässt sich das perfekt realisieren. Dies wird mit FileMappings realisiert und ist daher sicherer als der Weg über die Zwischenablage, da diese zwischenzeitlich vom User oder anderen Programmen geändert sein könnte. Der Source:
' PROFAN²-NT-TEAM-Vorlage
' Autor: Sven Schmidts, concept/design
' Titel: SharedMemory
' Beschreibung: Das Programm ermöglicht die gemeinsame Nutzung von Speicher. Anwendungen
' können so leichter Daten untereinander austauschen (Strings).
' Anmerkung: Benötigt RGH-PROFAN² ab Version 7.0
' Copyright © 2000-2001 Sven Schmidts, schmidts@cdesign.de
'
' Prozeduren :
' - OpenMap MapName$, Size&
' Öffnet ein Mapping. MapName$ bezeichnet den Namen des Mappings.
' Size& bezeichnet die max. Größe in Byts, die gespeichert werden.
' Defaultwert ist 4096 Bytes sein, maximal ca 2 GByte. Anwendungen, die
' gemeinsam einen Speicher nutzen wollen, müssen als MapName$ dasselbe angeben.
' - CloseMap
' Schliesst das Mapping wieder
' - ReadStrFromMap
' Liest den momentanen Inhalt als String aus
' - WriteStrToMap Text$
' Schreibt den String Text$ in das Mapping
'
Def CreateFileMapping(6) !"KERNEL32","CreateFileMappingA"
Def UnmapViewOfFile(1) !"KERNEL32","UnmapViewOfFile"
Def MapViewOfFile(5) !"KERNEL32","MapViewOfFile"
Def CloseHandle(1) !"KERNEL32","CloseHandle";
Declare HandleMap&, ViewPointer&, Buffer#
Proc OpenMap
Parameters MapName$, Size&
HandleMap& = CreateFileMapping($FFFFFFFF,0, 402653188,0,Size&,Addr(MapName$))
If HandleMap& <= 0
MessageBox("Fehler beim erstellen des Mappings !","Fehler",16)
Else
ViewPointer& = MapViewOfFile(HandleMap&, 983071, 0, 0, 0)
Case ViewPointer& = 0 : MessageBox("Fehler beim erstellen des Views !","Fehler",16)
Endif
EndProc
Proc CloseMap
UnMapViewOfFile(ViewPointer&)
CloseHandle(HandleMap&)
EndProc
Proc ReadStrFromMap
' Lesen
Declare Ergebnis$, OldBuffer&
If ViewPointer& <> 0
Dim Buffer#, 512
OldBuffer& = Buffer#
Buffer# = ViewPointer&
Ergebnis$ = String$(Buffer#,0)
Buffer# = OldBuffer&
Dispose Buffer#
EndIf
Return Ergebnis$
EndProc
Proc WriteStrToMap
' Schreiben
Parameters Text$
Declare OldBuffer&
If ViewPointer& <> 0
Dim Buffer#, Len(Text$)+1
OldBuffer& = Buffer#
Buffer# = ViewPointer&
String Buffer#,0 = Text$
Buffer# = OldBuffer&
Dispose Buffer#
EndIf
EndProc
' Beispiel Programm
' Compileren und zweimal starten, austausch vom Text mittels "Lesen" / "Schreiben"
''cls
''Declare E%, Ende%, Lesen%, Schreiben%, Edit%
''Let Ende%= CreateButton(%Hwnd,"Ende",10,10,90,20)
''Let Lesen%= CreateButton(%Hwnd,"Speicher lesen",110,10,120,20)
''Let Schreiben%= CreateButton(%Hwnd,"Speicher schreiben",240,10,140,20)
''Let Edit% = CreateEdit(%Hwnd,"",10,40,600,22)
''
''OpenMap "TestMap", 4096
''
''WhileNot E%
''SetFocus(Edit%)
''WaitInput
'' If GetFocus(Ende%)
'' Let E% = 1
'' ElseIf GetFocus(Lesen%)
'' ReadStrFromMap
'' SetText Edit%,$(0)
'' ElseIf GetFocus(Schreiben%)
'' WriteStrToMap GetText$(Edit%)
'' EndIf
''''Wend
''CloseMap
Mfg.
Sven Schmidts
|
|
|