Tartalmi kivonat
Windows alkalmazások kommunikációja DDE segítségével DDE Protokoll A DDE (Dynamic Data Exchange) az MS Windows speciális protokollja, amely lehetővé teszi, hogy két alkalmazás adatokat cseréljen egymással. A két alkalmazás futhat azonos gépen, de futhatnak különböző gépeken is. A DDE protokoll NETBEUI protokollt használ, ennek egy nagyon fontos tulajdonsága az, hogy nem route-olhato, tehát DDE segítségével csak egy alhálózaton belül található gépeken futó alkalmazások között cserélhetünk adatokat. Az alkalmazások az adatokat egy csatornán továbbitják, melyen az adatok mindkét irányban haladhatnak. A DDE kommunikáció során csak String vagy Variant formában küldhetünk és fogadhatunk adatokat. A párbeszédet kezdeményező alkalmazást célalkalmazásnak vagy DDE ügyfélnek(DDE Client) nevezzük. A párbeszéd másik szereplője a DDE kiszolgáló(DDE Server) Egy alkalmazás egyszerre több csatornán folytathat kommunikációt, sőt
egy alkalmazás lehet egyszerre DDE kliens és DDE szerver is. A DDE párbeszéd kezdeményezéséhez két dologra van szükség: • • Meg kell adnunk a kiszolgáló alkalmazás nevét (application) Meg kell adnunk a párbeszéd témáját (topic) A kiszolgálók különböző témákat ismernek, de van olyan téma, amelyet általában minden kiszolgáló ismer, ez a System téma. Ha egy kiszolgálóhoz egy általa ismert témában érkezik párbeszédre való felkérés, akkor válaszol és megnyit egy csatornát. A csatorna megnyitása után már sem a kiszolgáló alkalmazás, sem pedig a téma nem változtatható meg. Új témához új csatornán kell párbeszédet kezdeményezni. A párbeszéd során a két alkalmazás speciális elemekre (item) vonatkozó üzeneteket vált egymással. Az elemek alkalmazásonként illetve témánként változhatnak. Az elem egy olyan adatra hivatkozik, amely a két alkalmazás között kicserélhető: Word dokumentum egy könyvjelzője, Excel
munkalap egy cellája, stb. A Windows alkalmazások a DDE párbeszédben egy egyedi alkalmazásnevet használnak: MSAccess, Excel, Winword, stb. Az alkalmazások neve általában a végrehajtható fájl neve exe kiterjesztés nélkül. A téma a kiszolgáló alkalmazás számára ismerős egységet jelöl meg. Az olyan alkalmazások esetén, amelyek fájlokkal dolgoznak általában a téma a fájl neve. Mint már korábban is szó volt róla, a legtöbb alkalmazás ismeri a System témát. Ennek segítségével magáról az alkalmazásról kérhetünk adatokat, például azt, hogy milyen témákat támogat. DDE használata VBA nyelvben DDE párbeszéd kezdeményezése DDE párbeszédet a DDEInitiate függvénnyel kezdeményezhetünk. A függvény paramétere az alkalmazásnév és a téma. ChanelNum=DDEInitiate(“Excel”,”System”) Ha a párbeszéd kezdeményezésünket a kiszolgáló alkalmazás elfogadta a függvény egy csatornaszámot ad vissza. Ez a csatornaszám
használandó paraméterként a további kommunikáció során. Ha a megadott alkalmazás nem fut, vagy számára ismeretlen témában próbálunk meg párbeszédet kezdeményezni, akkor egy hibajelzést kapunk. Adatkérés másik alkalmazástól A párbeszéd során a DDERequest függvény meghívásával kérhetünk adatokat a másik alkalmazástól. A függvény paramétere a párbeszédhez tartozó csatornaszám és a kért elem neve ExcelTopics=DDERequest(ChanelNum,”Topics”) Ha a csatorna egy nem létező párbeszédre hivatkozik, vagy a másik alkalmazás nem ismeri fel a megadott elemet, akkor hibajelzést kapunk. Adatszolgálatatás másik alkalmazás számára Az ügyfél is adhat adatot a kiszolgálónak, erre szolgál a DDEPoke eljárás. Az eljárás argumentuma a csaronaszám, az elem neve, valamint az elküldeni kívánt adat. DDEPoke ChanelNum, “R1C1”, “100” Az adat, mint már korábban is említettem csak String vagy Variant típusú lehet. Az adat
értelmezése a másik alkalmazás feladata. A fenti példa az Excel munkalap első sorának első oszlopába 100-as értéket ír. Parancs küldése másik alkalmazásnak A DDE párbeszéd során parancsot jelentő karakterláncot is küldhetünk a kiszolgáló alkalmazásnak a DDEExecute eljárás segítségével. Az eljárás paramétere a csatornaszám és a végrehajtandó parancs. DDEExecute ChanelNum, “[OPEN(“”BOOK1.XLS””)]” Az Excel és a Word a kapott karakterláncot úgy hajtják végre mint egy makrót. A fenti példában az Excel megnyitja a Book1.xls munkalapot DDE párbeszéd lezárása A DDE párbeszédet, ha már nem kívánunk adatokat kérni vagy közölni, le kell zárnunk. A párbeszéd lezárására szolgálnak a DDETerminate illetve a DDETerminateAll eljárások. A DDETerminate a paraméterként megadott csatornát zárja be, a DDETerminateAll pedig az összes megnyitott csatornát bezárja. DDETerminate ChanelNum DDEterminateAll