WMCopyData absichern
Zuerst sei folgender Beitrag erwähnt: https://stackoverflow.com/questions/...16703#35516703
Im initialization-Abschnitt wird das hier geschrieben
Delphi-Quellcode:
dwMyCopyDataID := RegisterWindowMessage('MyCopyDataID');
In WmCopyData wird dann geprüft
Delphi-Quellcode:
if Msg.CopyDataStruct.dwData = dwMyCopyDataID then
Aber was übergebe ich zuvor dwData, damit das alles auch funktioniert? Entweder sind mein Englischkenntnisse zu schlecht oder in oben genannten Beitrag steht es nicht. |
AW: WMCopyData absichern
Zitat:
Eigentlich wird hier RegisterWindowMessage missbraucht. Man nutzt das eigentlich, um sich eine "global" ein eindeutige MessageID zu besorgen. Windows nimmt den überbebenen Bezeichner, ist er noch nicht bekannt, wird dafür eine ID generiert, und ist er schon bekannt, dann bekommt man die vorher erstellte ID. Normaler Weise wird diese ID dann für SendMessage zwischen zwei Programmen verwendet, aber WM_COPYDATA gibt es nur als eine MessageID, also verwenden die diese ID hier nun als Kennung innerhalb der kopierten Daten. Statt RegisterWindowMessage kannst du hier auch einen hardgecodeten Identifikator verwenden oder eine ID aus einer anderen Quelle nutzen. |
AW: WMCopyData absichern
Zitat:
|
AW: WMCopyData absichern
Ist auch was.
Es geht ja nur darum zu "authentifizieren" von wo die WM_COPYDATA-Message kommt, denn leider bekommt man beim SendMessage/PostMessage vom Windows nicht mitgeteilt von wem diese Message kommt und es kann dir ja praktisch fast jedes Programm soeine Message schicken. Alternativ gibt es auch andere Möglichkeiten der IPC, außer den Messages. |
AW: WMCopyData absichern
Mit dem Cardinal-Wert den ich als Konstante festgelegt habe, sollte es eigentlich reichen.
Für diese kleine Angelegenheit reicht WMCopyData vollkommen. Es geht nur darum Daten an die laufende Anwendung zu schicken, wenn man zum Beispiel die Anwendung mit Parametern noch einmal über die Kommandozeile o.ä. startet. Ist die Anwendung (Empfänger) bereits aktiv, werden die Parameter weitergegeben und die zweite Instanz (Sender, über Kommandozeile) sofort beendet. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz