![]() |
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 :-) |
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 |
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. |
Mal kommt die Message an mal passiert gar nichts :-(
Was kann ich damit verhindern? Zitat:
MFG Thomas |
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.
|
Und welchen Fehler kann ich jetzt damit verhindern?
Oder was bringt mich das Weiter? Was kann ich mit so einer ID machen? |
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. |
Die Window Message wird doch beim Sender erzeugt, oder?
Wenn ja, dann hab ich die tatsächlich öfter erzeugt :oops: MFG Thomas |
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. |
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 Uhr. |
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