![]() |
Problem beim senden eines Textes an eine andere Anwendung
Ich möchte an eine andere von mir programmiete Anwendung einen Text senden. Dazu verwende ich folgenden Code:
Senden:
Delphi-Quellcode:
Empfangen:
PostMessage(h, WM_MultiStarted, 0, Integer(PChar(ParamStr(1))));
Delphi-Quellcode:
Nur leider kommen da nur irgendwelche Hieroglyphen raus. Wenn ich aber einen konstanten String angebe, beispielsweise so:
procedure TMainForm.MultiStarted(var Msg: tagMSG; var Handled: Boolean);
var Parameter: String; begin if Msg.message = WM_MultiStarted then begin Parameter := String(PChar(Msg.lParam)); showmessage(Parameter); end; end;
Delphi-Quellcode:
dann zeigt er mir auch 'test' an.
PostMessage(h, WM_MultiStarted, 0, Integer(PChar('test')));
Was mache ich falsche? Kann mir da jemand weiter helfen? |
Re: Problem beim senden eines Textes an eine andere Anwendun
Du solltest für sowas WM_COPYDATA verwenden.
|
Re: Problem beim senden eines Textes an eine andere Anwendun
wenn ich WM_COPYDATA verwende, dann kommt gar nichts mehr an.
|
Re: Problem beim senden eines Textes an eine andere Anwendun
Zitat:
![]() |
Re: Problem beim senden eines Textes an eine andere Anwendun
Ok danke, jetzt funzt es, ich musste dafür zwar noch ein paar kleine Veränderungen an meinem Programm vornehmen, damit ich das Handle der Form finde und nicht nur das von der Application.
|
Re: Problem beim senden eines Textes an eine andere Anwendun
Zitat:
Die Aussage, dass WM_COPYDATA bei dir nicht funktioniert ist ohne Quellcode wenig hilfreich. Es ist sehr wahrscheinlich, dass du einen Fehler im Quellcode hast. |
Re: Problem beim senden eines Textes an eine andere Anwendun
@ Luckie
Schönen Dank für deine Erklärung. Mir war schon fast klar, dass das Problem mit den Zeigern zusammenhängt, nur versteh ich nicht so wirklich, warum, wenn ich in die Klammern von PChar etwas in Hochkommas geschrieben habe, es funktioniert hat. Aber wie schon gesagt, es funktioniert jetzt. |
Re: Problem beim senden eines Textes an eine andere Anwendun
Das geht, weil der konstante String an einer festen Speicherstelle steht. Wenn die Empfängerapplikation also von der selben Echse wie die Senderapplikation gestartet wurde, liegt dort ebenfalls der String.
|
Re: Problem beim senden eines Textes an eine andere Anwendun
Danke für die Erklärung, langsam verstehe ich immer mehr, wie das mit den Zeigern funktioniert.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz