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