Deutsch
Forum

String-Bereichsvariable mit Sendmessage an einem Prozess übergeben...?

 

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
 
07.04.2016  
 




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
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

08.04.2016  
 



@Funkheld:

wm_copydata (Beispiel) ist die spezielle Message, mit der man Speicherbereiche von Prozess zu Prozess kopieren kann.
 
08.04.2016  
 




funkheld
Ja danke für die Hilfe.

Wie kann man dieses bitte noch in XProfan umsetzen: [...] 

Danke.Gruss
 
08.04.2016  
 



Beispiellink hatte ich beigelegt:  [...] 
 
08.04.2016  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

4.114 Betrachtungen

Unbenanntvor 0 min.
H.Brill17.10.2022
iF03.06.2018
rquindt04.03.2018
Peter Max Müller19.12.2017
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

funkheld (2x)
iF (2x)
Georg Teles (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie