Servus,
ich versuche grade eine kleine API für ein Programm von mir zu schreiben und will das über sendmessage realisieren.
Unter anderem soll das programm auch per SendMessage text empfangen und senden.
Das heißt wenn ich z.B. an das Programm per SendMessage folgendes sende:
Delphi-Quelltext
1:
| SendMessage (MyHandle, WM_USER+2,19,0) |
So soll aus edit1 der text als result zurückgegeben werden. laut google geht das mit
Delphi-Quelltext
1:
| msg.Result := Integer (PChar (edit1.text)); |
Text senden an die applikation ginge dann auch laut google:
Delphi-Quelltext
1:
| SendMessage (MyHandle, WM_USER+2, 20, Integer (PChar (edit1.text))); |
Das ganze hab ich zum testen mal in ein Programm implementiert (also Senden und empfangen in das gleiche app). Da funktioniert das ganze auch, wenn ich das nun allerdings mache wie gedacht, und zwar das ein anderes programm mit meinem kommunizieren kann, so kommt es entweder zu einer Access Violation oder der resultierende String den ich mit
Delphi-Quelltext
1:
| ShowMessage (String (PChar (SendMessage (MyHandle, WM_USER+2,20,0)))); |
anzeigen will ist einfach nur totaler crap.
Meine vermutung liegt drin, das der PChar, denn ich mit dem typecast erhalte einfach auf einen nicht zugewiesenen speicher zeigt. Woran kann das liegen? bzw wie kann ich den fehler wegbekommen, das ich den text korrekt typecasten kann, damit auch wieder ein anfangsstring rauskommt?
Danke schonmal für jede Hilfe!
P.S.: Der WParam ist bei mir einfach eine Zahl, um festzustellen, welche API funktion meines programms aufgerufen wird, der LParam ist jeweils einfach der Parameter für die API Funktion, also in dem Fall ein String (bzw. PChar).
MfG Hybrid666