Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   WMCopyData absichern (https://www.delphipraxis.net/194361-wmcopydata-absichern.html)

Glados 11. Nov 2017 19:12

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.

himitsu 11. Nov 2017 19:26

AW: WMCopyData absichern
 
Zitat:

Aber was übergebe ich zuvor dwData, damit das alles auch funktioniert?
Das Selbe?

Eigentlich wird hier MSDN-Library durchsuchenRegisterWindowMessage 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.

Glados 11. Nov 2017 19:58

AW: WMCopyData absichern
 
Zitat:

Statt RegisterWindowMessage kannst du hier auch einen hardgecodeten Identifikator verwenden oder eine ID aus einer anderen Quelle nutzen.
Ich habe bereits eine vom inno-Setup generierte Zeichenkette als String vorliegen. Dann werde ich die mit SameText vergleichen.

himitsu 11. Nov 2017 22:12

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.

Glados 11. Nov 2017 23:18

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