Zitat von
Apollonius:
Wie hast du es denn mit der Semaphore versucht? Habe ich das richtig verstanden, dass du eigentlich nur den Datenaustausch über eine MMF synchronisieren willst?
Genau darum gehts mir
Wegen mir kann der Datenaustausch auch über ne Namedpipe laufen, nur
TCP will ich nicht unbedingt bemühen..
Semaphore hab ich angelegt in meinem Programm A mit Startwert 0 und Maximalwert 1, in der
Dll geöffnet und mit WaitForSingleObject gewartet. Wenn nun im Programm A nen Button gedrückt wird, mach ich ein ReleaseSemaphore und direkt ein WaitForSingleObject, das WaitFor.. in der
Dll kehrt zurück, ich hole in der
Dll die Daten aus Programm B (das hat die
Dll geladen), mache ein ReleaseSemaphore und das Programm A weiß dass die
Dll fertig ist... Den Ablauf kann man natürlich so noch länger hin und her wechseln lassen, um mehrere Daten über das MMF zu übertragen, allerdings hab ich da das Problem, dass manchmal ein Eintrag mehrmals im Programm A ankommt oder dass nicht alles ankommt.. Keine Ahnung, wieso... :/
Gibts zur Synchronisierung vllt ne schönere Möglichkeit?
LG
Edit:
Zitat von
sirius:
Du musst unterscheiden zwischen sendmessage und postmessage. Bei sendmessage kommt die Nachricht direkt an das ZielFenster und nicht über die MessageQueue und demanch auch nicht über getmessage.
Und wenn du für das WM_Quit ein breakpoint bei deallocatehwnd setzt?
Habs nun auch mit PostMessage versucht, hat aber nichts geändert, nur dass das Programm das die
Dll lädt nun abstürzt wenn ich WM_QUIT sende.... MessageBoxen bekomm ich immernoch nur die 'notify' und keine aus der Loop... Wie geht das mit nem Breakpoint in ner
Dll, wenn die
Dll von nem externen Programm geladen wird?