Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
2 - PROFAN-Programmierung

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Neuerer Beitrag  |  Älteres Thema 
 $004A : wm_CopyData mit Sendmessage ?
Autor: peter (---.pools.arcor-ip.net)
Datum:   26.04.16 18:52

Hallo, guten Tag.

Wie funktioniert dieses bitte :
$004A : wm_CopyData
mit Sendmessage? und die Auswertung beim Progamm, welches diese Daten empfängt?

Wer kann mir bitte mal ein Beispiel erstellen mit einem Bereich# ?

Danke.
Gruss

Beitrag beantworten
 
 Re: $004A : wm_CopyData mit Sendmessage ?
Autor: Heinz Brill (---.dip0.t-ipconnect.de)
Datum:   26.04.16 19:31

Probiers mal so (bin mir jetzt nicht so ganz sicher) :

Das sendende Programm :
- Einen Bereich (Bereich#) mit Struktur definieren
und mit Daten füllen
- mit FindWindow das Handle des empfangenden
Fensters auslesen.
SendMessage(Handle, $004A, %HWnd, Bereich#)

Das empfangende Programm :
- Einen Bereich (Bereich1#) mit Struktur definieren
-UserMessages $004A
-%UMessage abfragen
- in &UWParam steht also die Adresse des Bereich#
- Bereich1# = &UWParam
Die Daten müßten jetzt in der Struktur abgegriffen werden.

Also, mal das Thema UserMessages lesen.

Probieren geht über studieren.

H.Brill
XProfan X4 + FreeProfan
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen
den unseren hinzufügen.

Was die Borg können, können wir schon lange !!!

Nachricht bearbeitet (26.04.16 19:32)

Beitrag beantworten
 
 Re: $004A : wm_CopyData mit Sendmessage ?
Autor: peter (---.pools.arcor-ip.net)
Datum:   26.04.16 22:11

Es kommt "0" oder eine andere Zahl an, nicht die ich eingebe.

Gibt es noch eine andere Adressenübergabe in Profan (Pointer)?

Danke.
Gruss

 Declare zielfenster&,pointer#
 Declare Handle ZielFenster&
 declare b_send&,&,ende&,color&,wert&
 
 Struct Daten = w&
 dim pointer#,Daten
 
 Window 20,20-200,200
 windowtitle "send-bereich"
 
 color&=rgb(160,160,160)
 cls color&
 
 b_send& = Create("Button",%HWnd,"send", 10, 20, 80, 24)
 
 shell "empfang_bereich.exe"
 sleep 500
 zielfenster&=findwindow("empfangbereich")
 
 ende& = 1
 while ende&
     waitinput
     If Clicked(b_send&)
       pointer#.w& = 255123
       sendMessage(ZielFenster&,$004A,%HWnd,pointer#)
     endif
 endwhile
 end
 


 declare ende&,pointer#
 
 Struct Daten = w&
 dim pointer#,Daten
 
 ende&=1
 
 windowtitle "empfangbereich"
 Window 220,20-300,200
 
 UserMessages  $004A
 WHILE ende&
    waitinput
 
    If %UMessage = $004A
        pointer#= &UwParam
        print pointer#.w&
    endif
 ENDWHILE
 
 end
  
 




Nachricht bearbeitet (27.04.16 09:15)

Beitrag beantworten
 
 Re: $004A : wm_CopyData mit Sendmessage ?
Autor: Heinz Brill (---.dip0.t-ipconnect.de)
Datum:   27.04.16 17:16

Hab was gefunden.
Schau mal hier :
http://xprofan.net/intl/de/quelltexte/copydata-kommunikation-prozessen-wmcopydata/

Das ist es, was du suchst.

H.Brill
XProfan X4 + FreeProfan
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen
den unseren hinzufügen.

Was die Borg können, können wir schon lange !!!

Beitrag beantworten
 
 Re: UserMessages
Autor: David Strutz (---.dip0.t-ipconnect.de)
Datum:   27.04.16 19:20

UserMessages dürften leider für wm_copydata garnicht verwendet
werden weil die Adresse hinter dem Speicher nicht mehr sicher ist,
weil UserMessages längst empfangen wurden bevor sie (asynchron)
aus WaitInput heraus leiten und der Sender den allozierten Speicher
(lparam) nicht unmöglich mittlerweile anderweitig verwendet.

Danach bleibt dann datensicherer Empfang in einer subclassproc,
die wiederum kann jedoch Aussetzer haben und es könnten darüber
wm_copydata Nachrichten übersehen werden.

Danach bleibt dann also nur eine eigene wProc, diese wiederum
müsste dann aber auch eine nProc sein da die App sonst jederzeit
abstürzen könnte weil ProcAddr auf eine XProfan-Proc leider nur für
Enumeration statt auch für APCs verwendet werden darf.

IMHO geht sicheres wm_copydata-Empfangen mit XProfan dann in
Verbindung mit einer nProc als wndProc.

@Roland: Ich bin nicht sicher ob ich Dich bereits gefragt hatte, ob
Du bei der wm_copydata-Nachricht in Deiner "default" wProc
(sei es die für hWnd) nicht eine Ausnahme regeln könntest
sodass der Speicher hinter lParam auch wirklich zur Verfügung
steht und sicher zu empfangen ist auch ohne nProcs-Workaround.

Es wäre auch ganz einfach zu realisieren rein nur mit 1 weiterem
Speicher zur Laufzeit da nur 1 Thread: Kommt wm_copydata,
dann wird der Speicher (re-)dimensioniert und der Inhalt aus
lparam kopiert, und zuletzt, lparam auf die Adresse des
eigenen Speichers setzen.

wm_copydata ist eine der wertvollsten Messages.



XProfan & FreeProfan rox: http://xprofan.net/



Nachricht bearbeitet (27.04.16 19:27)

Beitrag beantworten
 
 Re: UserMessages
Autor: peter (---.pools.arcor-ip.net)
Datum:   27.04.16 21:27

Hallo das liest sich gut,

Ich wünsche auch das Roland diese wichtige Message für Xprofan umsetzt.

GRuss

Beitrag beantworten
 Foren-Liste  |  Baumstruktur   Neuerer Beitrag  |  Älteres Thema 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org