Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Programm über SendMessage kontrollieren (https://www.delphipraxis.net/85753-programm-ueber-sendmessage-kontrollieren.html)

sirius 12. Mär 2007 14:37

Re: Programm über SendMessage kontrollieren
 
Nö siehst du falsch.
Sollte alles in s vorliegen. Überprüfe es doch einfach mal.

Ich übergebe ja nur den pointer auf das erste Zeichen und er kopiert dann msg.lparam zeichen an diese Adresse. Aber hintereinander. Und mit setlength(s,..) hab ich genügend speicherplatz reserviert.

Scorpion 12. Mär 2007 16:11

Re: Programm über SendMessage kontrollieren
 
Hi, ok, jetzt hab ichs auch... ich hab nur noch ein riesen problem, das habe ich jetzt erst bemerkt

in der funktion, wo ich die daten empfange...

angenommen, ich habe die daten die ich empfangen habe in einen string kopiert, z.b. data : String;

wenn ich jetzt versuche mit diesem string weiterzuarbeiten geht garnichts mehr.

ich versuche lediglich folgenden code anzuwenden:

Delphi-Quellcode:
showmessage(Data + '...');
doch anstatt den ... sehe ich nur leerzeichen, ich hab keine peilung warum ???

sirius 12. Mär 2007 16:28

Re: Programm über SendMessage kontrollieren
 
Entschuldige PChar und String auf die harte Tour zu verainbaren ist nicht so einfach:
Delphi-Quellcode:
procedure xxx.receive(var msg:TMessage);
var s:string;
begin
  setlength(s,msg.lparam+1);
  l:=globalgetatomname(msg.wparam,@s[1],msg.lparam+1);
  setlength(s,msg.lparam);

end;

torud 5. Sep 2007 11:19

Re: Programm über SendMessage kontrollieren
 
Da ich gerade dabei bin das ganze hier nachzuvollziehen aber immer wieder scheitere, weil im empfangenden Programm nichts ankommt, frage ich mich nun ernsthaft wodurch denn die Recieve-procedure aufgerufen oder ausgelöst werden soll.

Ich habe mal die durch xxx angegebenen namen durch meine ersetzt. ich hoffe es liegt nicht daran...:-)

Delphi-Quellcode:
  public
    { Public-Deklarationen }
    procedure Receive(var msg:TMessage);message wm_user+10;
  end;

procedure TForm1.Receive(var msg:TMessage);
var s:string;
    l:cardinal;
begin
  ShowMessage('kommt was!'); // wird nicht aufgerufen, daher die vermutung, dass die procedure nicht aufgerufen wird...
  SetLength(s,msg.lparam);
  l:=GlobalGetAtomName(msg.wparam,@s[1],msg.lparam+1);
  setlength(s,msg.lparam);
  ShowMessage(s); //wird nicht angezeigt
end;
Habe ich etwas wichtiges vergessen???


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:05 Uhr.
Seite 3 von 3     123   

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