Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Wie sicher ist wm_copydata (https://www.delphipraxis.net/210618-wie-sicher-ist-wm_copydata.html)

himitsu 22. Mai 2022 19:08

AW: Wie sicher ist wm_copydata
 
Du hast ja die Qual der Wahl, wobei nur EINWAS ewig wartet (außer es läuft im selben Thread, wie das Ziel).

PostMessage
PostThreadMessage

SendMessage
SendMessageTimeout
SendMessageCallback **
SendNotifyMessage

Und neben WM_COPYDATA gibt es auch noch Anderes, um Daten zu übergeben.
WM_SETTEXT/SendTextMessage und drüben in einem unsichtbaren Windows auf WM_SETTEXT reagieren. (nur die #0000 darf da nicht vorkommen, aber dafür gibt es ja Lösungen)

TurboMagic 22. Mai 2022 19:41

AW: Wie sicher ist wm_copydata
 
Ah, danke für die neueren Sendmessage Varianten, die kannte ich noch nicht!

peterbelow 23. Mai 2022 10:23

AW: Wie sicher ist wm_copydata
 
Zitat:

Zitat von TurboMagic (Beitrag 1506189)
Nur: SendMessage wartet, bis der Empfänger die Botschaft verarbeitet hat.
Falls das empfangende Programm aber irgendwie in eine Endlosschleife geraten sein sollte
wäre dann auch der Sender blockiert, was vermutlich nicht gewünscht wäre... ;-)

Deshalb sollte man auch SendMessageTimeout verwenden wenn der Addressat in einem anderen Prozess lebt...:?

himitsu 23. Mai 2022 11:32

AW: Wie sicher ist wm_copydata
 
Oder SendMessageCallback, falls man das Ergebnis braucht, aber nicht warten möchte,
oder SendNotifyMessage, was so ähnlich wie PostMessage nicht auf die Ausführung wartet.

Beim SendNotifyMessage weiß ich jetzt aber nicht, ob es nur auf das Ende nicht wartet, aber vielleicht darauf, ob die Verarbeitung anfängt.
Das wäre von Interesse, falls schon vorher eine andere Message dort hängt.
Im Delphi z.B. der Fall, wenn eine Exception in einer vorherrigen Message auftrag, wo jene Message erst beendet wird, wenn jemand den Fehlerdialog schießt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:19 Uhr.
Seite 2 von 2     12   

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