Einzelnen Beitrag anzeigen

rab0r

Registriert seit: 11. Apr 2006
10 Beiträge
 
#12

Re: dll als Bindeglied zwischen 2 Programmen

  Alt 1. Feb 2008, 15:42
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?
  Mit Zitat antworten Zitat