AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FindWindow und WM_COPYDATA

Ein Thema von Gler · begonnen am 18. Jun 2019 · letzter Beitrag vom 19. Jun 2019
 
samso

Registriert seit: 29. Mär 2009
440 Beiträge
 
#3

AW: FindWindow und WM_COPYDATA

  Alt 18. Jun 2019, 17:31
Problem 1:
FindWindow gibt Dir halt das erste beste Fenster mit dem Text "Test" zurück. Bei Windows ist aber fast alles ein Fenster. Nicht nur das was wir als Fenster kennen. Auch ein Button ist gern mal ein Fenster (jedenfalls für "FindWindow"). Eine erste Lösung (Im Sinne von Quick&Dirty) kann sein, dass Du einen hinreichend eindeutigen Namen für die Fensterklasse vergibst. Also statt "TForm" nennst Du das Dingen "TMeineEmfaengerForm". Dann änderst Du den Aufruf in hTargetWnd:=FindWindow('TMeineEmfaengerForm', nil); .

Problem 2:
Wenn Du zwischen Delphi 3 und Delphi 10 Strings austauschen willst, musst Du bedenken, dass bei Delphi 3 ein String ein AnsiString ist. Bei Delphi 10 ist es aber eine UTF16-String. Für den Test kannst Du bei dem Delphi 10-Programm auf AnsiStrings wechseln.

Beim Sender unter Delphi 10
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  aCopyData: TCopyDataStruct;
  hTargetWnd: HWND;
  s:Ansistring;
begin
  s:='test';
  with aCopyData do
  begin
    dwData := 0;
    cbData := Length(s) + 1;
    lpData := PAnsiChar(s);
  end;

 hTargetWnd:=FindWindow('TMeineEmfaengerForm',nil);
 if hTargetWnd <> 0 then
    SendMessage(hTargetWnd, WM_COPYDATA, Longint(Handle), Longint(@aCopyData))
  else
    ShowMessage('No Recipient found!');
end;
Beim Empfänger unter Delphi 10
Delphi-Quellcode:
procedure TMeineEmfaengerForm.WMCopyData(var Msg: TWmCopyData);
var
  s: Ansistring;
begin
  SetString(s, PAnsiChar(Msg.CopyDataStruct.lpData), Msg.CopyDataStruct.cbData);
  label1.Caption := String(s);
end;

Geändert von samso (18. Jun 2019 um 17:43 Uhr) Grund: Cast PAnsiChar fehlte
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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