| |
|
|
funkheld | Hallo, guten Tag.
Ich möchte einen String in eine Bereichsvariable stecken und mit Sendmessage an einem Prozess senden. Dort mit Getmessage empfangen und dort mit Print ausgeben. Die Variable wert1& möchte ich in Sendmessage durch eine Bereichsvariable ersetzen.
Wie funktioniert das bitte?
Danke.
$MAKE CLE
$H Messages.PH
Declare h&,hd&,hd1&,ende&,wert&,wert1&,b_send&,text$,tadr&
declare pointer#
dim pointer#,32
Declare Handle ZielFenster
Proc Prozess
parameters hd&,hd1&
declare w&,w1&,ende&
windowtitle "empfang"
window 10,10 - 150, 150
ende& = 0
whilenot ende&
sleep 1
GetMessage
If %Message = $1000
w&=&wParam
w1&= &lParam
locate 3,1
print " " + str$(w&) + " "
setText hd&, str$(w&)
locate 5,1
print " " + str$(w1&) + " "
setText hd1&, str$(w1&)
endif
endwhile
endproc
windowtitle "send"
window 10,200-200,200
hd& = create("Text", %hWnd, "", 20, 10, 60, 20)
hd1& = create("Text", %hWnd, "", 20, 35, 60, 20)
b_send& = Create("Button",%hWnd,"send", 10, 65, 80, 24)
h&=pExec("|Prozess",hd&,hd1&)
sleep 500
ZielFenster = FindWindow("empfang")
ende& = 0
whilenot ende&
waitinput
If Clicked(b_send&)
wert&=wert&+1
wert1&=wert1&+5
String pointer#,0 = "Test"
PostMessage(ZielFenster, $1000, wert&, wert1&)
endif
endwhile
end
|
|
|
| |
|
|
|
Georg Teles | Nabend !
naja muss es denn eine Bereichsvariable sein ? Schau mal die Befehle zu MapFile an, das gibt es seit XProfan X2 (glaube) ... ansonsten hier ein anderes Beispiel mit Mapfile, der Code ist Steinkohle & stammt aus der Community daher habe gerade kein Link dazu parat
Def CreateFileMapping(6) !"KERNEL32","CreateFileMappingA"
Def UnmapViewOfFile(1) !"KERNEL32","UnmapViewOfFile"
Def MapViewOfFile(5) !"KERNEL32","MapViewOfFile"
Def CloseHandle(1) !"KERNEL32","CloseHandle"
Declare h&,hd&,hd1&,ende&,wert&,wert1&,b_send&,text$,tadr&
Declare Handle ZielFenster
Declare HandleMap&, ViewPointer&, Buffer#
Proc Prozess
Declare HandleMap&, ViewPointer&, Buffer#
declare ende&, button&, text$
windowtitle "empfang"
window 10,10 - 150, 150
clear ende&
button& = create("Button",%HWnd,"auslesen",5,5,100,20)
OpenMap "testmap", 4096
whilenot ende&
Waitinput
If clicked(button&)
text$ = ReadStrFromMap()
locate 3,1
print " " + text$ + " "
EndIf
endwhile
CloseMap()
endproc
windowtitle "send"
window 10,200-200,200
hd& = create("Text", %hWnd, "", 20, 10, 100, 20)
b_send& = Create("Button",%hWnd,"send", 10, 65, 80, 24)
h&=pExec("|Prozess")
sleep 500
ZielFenster = FindWindow("empfang")
clear ende&
OpenMap "testmap", 4096
whilenot ende&
waitinput
If Clicked(b_send&)
text$ = "testtext "+Str$(rnd(200))
Settext hd&,text$
WriteStrToMap(text$)
endif
endwhile
CloseMap()
end
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 WriteStrToMap
Parameters Text$
Declare OldBuffer&
If ViewPointer& <> 0
Dim Buffer#, Len(Text$)
OldBuffer& = Buffer#
Buffer# = ViewPointer&
Char Buffer#,0 = Text$
Buffer# = OldBuffer&
Dispose Buffer#
EndIf
EndProc
Proc ReadStrFromMap
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 CloseMap
UnMapViewOfFile(ViewPointer&)
CloseHandle(HandleMap&)
EndProc
Servus |
|
|
| |
|
|
|
| @Funkheld:
wm_copydata (Beispiel) ist die spezielle Message, mit der man Speicherbereiche von Prozess zu Prozess kopieren kann. |
|
|
| |
|
|
|
funkheld | Ja danke für die Hilfe.
Wie kann man dieses bitte noch in XProfan umsetzen: [...]
Danke.Gruss |
|
|
| |
|
|
|
| Beispiellink hatte ich beigelegt: [...] |
|
|
| |
|
|