Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Daten zwischen 2 Prozessen austauschen?? Wie? (https://www.delphipraxis.net/788-daten-zwischen-2-prozessen-austauschen-wie.html)

thomasdrewermann 19. Sep 2002 13:29

Es ist ein Teil der Schulschutz-software die ich und theomega entwickeln.
Diese Teil, sperrt alle anwendungen. Der Lehrer kann dann eine Anwendung freigeben. Das Basis-Prg auf dem Client sendet diese Anwedung dann an die anwendung, die du testetes.

Ich hoffe du konntest was mit der Beschreibung anfangen :-)

thomasdrewermann 29. Sep 2002 14:51

Kann mir jemand noch ein Code zur Verwendung von WM_COPYDATA basteln?

Wäre echt nett, da die Register Window Message Methode nicht sehr zuverlässig ist :-(

MFG
Thomas

Christian Seehase 29. Sep 2002 16:52

Moin Thomas,

bist Du mal so gut, mir zu erklären, was an RegisterWindowMessage unzuverlässig ist? ;-)

Um zu verhindern, dass Du einen String angibst, der eventuell schon von einem anderen verwendet wird, lässt Du Dir am Besten von der IDE einen GUID String generieren (Strg-Shift-G). Der sollte, zumindest gemäss der Theorie, weltweit eindeutig sein.

thomasdrewermann 29. Sep 2002 18:34

Mal kommt die Message an mal passiert gar nichts :-(


Was kann ich damit verhindern?
Zitat:

Um zu verhindern, dass Du einen String angibst, der eventuell schon von einem anderen verwendet wird, lässt Du Dir am Besten von der IDE einen GUID String generieren (Strg-Shift-G). Der sollte, zumindest gemäss der Theorie, weltweit eindeutig sein.
Was ist ein IDE/GUID String?


MFG
Thomas

Chewie 29. Sep 2002 18:43

GUID heißt Global Unique IDentifier. Das ist eine ID, die weltweit nur einmal vorkommen soll. In der IDE von Delphi gibt es eine Option, so einen zu erzeugen. Eben besagtes Strg+Alt+G.

thomasdrewermann 29. Sep 2002 18:45

Und welchen Fehler kann ich jetzt damit verhindern?
Oder was bringt mich das Weiter?
Was kann ich mit so einer ID machen?

Christian Seehase 29. Sep 2002 19:20

Moin Thomas,

Du hattest die Zuverlässigkeit von Messages angezweifelt, die Du mit RegisterWindowMessage erzeugst.
Das würde stimmen, wenn der String der übergeben wird nicht eindeutig ist. Nimmst Du an dieser Stelle aber einen GUID String, so sollte dieser eindeutig sein.

Wenn die Message mal ankommt, und mal nicht, würde mich mal interessieren, wie Du das Ganze implementiert hast.
Da die Message ja nur einmal registriert werden muss, platzierst Du den Aufruf von RegisterWindowMessage am Besten im initialization Abschnitt des Hauptformulares.

Ich schau aber auch noch mal nach, wo ich eine Demo für WM_COPYDATA habe.

thomasdrewermann 29. Sep 2002 19:46

Die Window Message wird doch beim Sender erzeugt, oder?

Wenn ja, dann hab ich die tatsächlich öfter erzeugt :oops:

MFG
Thomas

Christian Seehase 30. Sep 2002 00:38

Moin Thomas,

wie oft Du RegisterWindowMessage in einem Programm aufrufst spielt keine Rolle. Wenn jedesmal der gleiche String übergeben wird, erhältst Du auch jedes mal den gleichen Rückgabewert. Deshalb ist es auch wichtig einen eindeutigen String anzugeben.
Aufrufen musst Du das bei allen beteiligten Programmen (müssen nicht nur zwei sein). Damit auch alle die gleiche Message erhalten muss auch bei allen beteiligten Programmen exakt der gleiche String übergeben werden.

Um allen Programmen die die entsprechende Message behandeln können gleichzeitig die Message zu schicken könntest Du

SendMessage(HWND_BROADCAST,.....)

verwenden. Es wird also kein spezielles Handle angegeben, sondern eben, als Ersatz, HWND_BROADCAST.
Da sich dieser Aufruf allerdings auf alle Fenster bezieht sollte man ihn sparsam einsetzen.

Luckie 30. Sep 2002 01:04

Zitat:

Zitat von Christian Seehase
Es wird also kein spezielles Handle angegeben, sondern eben, als Ersatz, HWND_BROADCAST.
Da sich dieser Aufruf allerdings auf alle Fenster bezieht sollte man ihn sparsam einsetzen.

Und wenn man dann doch eine doppelte MessageID erwischt hat, könnte das hier zu Problemen führen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 Uhr.
Seite 3 von 4     123 4      

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