MeisterB Geschrieben 29. Dezember 2003 Geschrieben 29. Dezember 2003 Hat jemand von euch Erfahrung im DDE Aufruf? Ich soll das irgendwie per C++ (Borlands C++ Builder) durchführen und hab keinen Plan wie ich dies anstellen soll. Bin für jede Hilfe/Anleitung dankbar. Zitieren
Guybrush Threepwood Geschrieben 1. Januar 2004 Geschrieben 1. Januar 2004 Anscheinend bin ich nicht der Einzige der nicht weiß was du mit DDE meinst:D Kannst du das vielleicht mal erläutern? Gruß Guybrush Zitieren
Klotzkopp Geschrieben 1. Januar 2004 Geschrieben 1. Januar 2004 DDE steht für Dynamic Data Exchange. Es handelt sich dabei um einen IPC-Mechanismus, also einen Mechanismus, mit dem zwei Anwendungen Daten austauschen können. Die MSDN Library ist da eigentlich recht ausführlich: http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/dataexchange/dynamicdataexchange.asp Zitieren
MeisterB Geschrieben 5. Januar 2004 Autor Geschrieben 5. Januar 2004 Erstmal Danke für den Link! Doch leider ist es von der MSDN zum funktionierenden Program ein langer Weg. Wie soll denn bitte dies: atomApplication = *szApplication == 0 ? NULL : GlobalAddAtom((LPSTR) szApplication); atomTopic = *szTopic == 0 ? NULL : GlobalAddAtom((LPSTR) szTopic); funktionieren? atomApplication und atomTopic kennt mein compiler nicht, muss ich nochwas includieren? Nachdem ich diese WM_DDE_INITIATE gesendet habe soll mir der Server ja laut MSDN eine WM_DDE_ACK zurück schicken aber wie kann ich feststellen ob ich diese überhaupt bekomme? Zitieren
Klotzkopp Geschrieben 5. Januar 2004 Geschrieben 5. Januar 2004 atomApplication und atomTopic müssen irgendwo vorher als ATOM deklariert werden. Dieser Typ sollte duch windows.h vorhanden sein. Die WM_DDE_ACK-Nachricht erhältst du ganz normal in deiner Nachrichtenschleife. Zitieren
MeisterB Geschrieben 5. Januar 2004 Autor Geschrieben 5. Januar 2004 Um ne Nachrichtenschleife abzufragen kann ich doch dies nutzen oder? MSG msg; while( ::PeekMessage( &msg, HandleDesClient, NULL, NULL, PM_NOREMOVE ) ) { if (::GetMessage( &msg, HandleDesClient, 0, 0 ) == -1) { return false; } else { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } } Wie bekomme ich jetzt damit aber raus ob ein WM_DDE_ACK zurück gesendet wurde? Zitieren
Klotzkopp Geschrieben 5. Januar 2004 Geschrieben 5. Januar 2004 msg.message ist dann WM_DDE_ACK. Zitieren
MeisterB Geschrieben 5. Januar 2004 Autor Geschrieben 5. Januar 2004 msg.message gibt doch nur die Nummer der Nachricht aus (in meinem Fall immer 15). Woher weiß ich jetzt das dies für WM_DDE_ACK steht? Zitieren
Guybrush Threepwood Geschrieben 6. Januar 2004 Geschrieben 6. Januar 2004 Original geschrieben von MeisterB msg.message gibt doch nur die Nummer der Nachricht aus (in meinem Fall immer 15). Woher weiß ich jetzt das dies für WM_DDE_ACK steht? Wie meinst`n das? Zitieren
Timon Geschrieben 6. Januar 2004 Geschrieben 6. Januar 2004 Original geschrieben von MeisterB msg.message gibt doch nur die Nummer der Nachricht aus (in meinem Fall immer 15). Woher weiß ich jetzt das dies für WM_DDE_ACK steht? aus dde.h: /* DDE window messages */ #define WM_DDE_FIRST 0x03E0 #define WM_DDE_INITIATE (WM_DDE_FIRST) #define WM_DDE_TERMINATE (WM_DDE_FIRST+1) #define WM_DDE_ADVISE (WM_DDE_FIRST+2) #define WM_DDE_UNADVISE (WM_DDE_FIRST+3) #define WM_DDE_ACK (WM_DDE_FIRST+4) #define WM_DDE_DATA (WM_DDE_FIRST+5) #define WM_DDE_REQUEST (WM_DDE_FIRST+6) #define WM_DDE_POKE (WM_DDE_FIRST+7) #define WM_DDE_EXECUTE (WM_DDE_FIRST+8) #define WM_DDE_LAST (WM_DDE_FIRST+8) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.