Einzelnen Beitrag anzeigen

norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#1

Wie sicher ist wm_copydata

  Alt 18. Mai 2022, 10:19
Hallo zusammen,

ich verschicke nur mal als Beispiel per Timer die Datum/Uhrzeit
Delphi-Quellcode:
procedure TForm1.ti1Timer(Sender: TObject);
var
  aCopyData: TCopyDataStruct;
  aHwnd: hwnd;
  sText: WideString;

begin
  sText := 'H' + DateTimeToStr(now);

  aCopyData.dwData := 17268;
  aCopyData.cbData := (Length(sText) + 1) * SizeOf(WideChar);
  aCopyData.lpData := PWideChar(sText);

  // Fenster anhand des Titelzeilentext suchen
  aHwnd:= FindWindowByTitle('Form2');

  if aHwnd<> 0 then
    SendMessage(aHwnd, WM_CopyData, WParam(Handle), LParam(@aCopyData))
end;
und empfange den in einem anderen Programm in Form2
Delphi-Quellcode:
procedure TForm2.WMCopyData(var Message: TWMCopyData);
var
  sText: String;

begin
  if (Message.CopyDataStruct.dwData = 17268) then
    // anzuzeigenden Text aus den Parametern generieren
    SetString(sText, PWideChar(Message.CopyDataStruct.lpData), Message.CopyDataStruct.cbData)
  else
    sText := 'Nichts für mich dabei';

  // Empfangenen Text ausgeben
  la1.Caption := sText;
end;
Meine Fragen sind nun:
  • Ist der Code so korrekt incl. Behandlung des Strings?
  • Kann es je nach System/Umgebung Probleme mit Firewall/Virenscanner/Windows-Versionen geben?
  • Kann es sein, dass andere Anwendungen den Text abfangen? Hier meine ich eher aus Versehen, nicht bewusster Versuch, Messages abzuhören. Und es soll ein recht eindeutiger Form-Name verwendet werden.
  • Kann man die Message auch an den Handle eines Programms schicken und nicht direkt an ein Form?

Es geht mir weniger um die Sicherheit der Daten gegen fremden Zugriff sondern darum, wie sicher die Daten gehandelt werden.

Danke für euer Feedback
Gerd

Geändert von norwegen60 (18. Mai 2022 um 11:07 Uhr)
  Mit Zitat antworten Zitat