Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Операционные среды АСОИУ / L22
.TXT я2ЏҐаҐ¤ з ¤ ле ®в Є«ЁҐв бҐаўҐаг
Љ«ЁҐв Ї®бл« Ґв ¤ лҐ бҐаўҐаг, ЁбЇ®«м§гп ва § ЄжЁо
xtyp_Poke ў ўл§®ўҐ дгЄжЁЁ DDEClientTransaction. ‚ нвг дгЄжЁо
в Є¦Ґ ЇҐаҐ¤ овбп Ё¬п ⥬л, Ё¬п н«Ґ¬Ґв , д®а¬ в ¤ ле Ё ¤аҐб
¤ ле.
DDEML ЇҐаҐ¤ Ґв ва § ЄжЁо бҐаўҐаг, ўл§лў п ҐЈ® дгЄжЁо
®вЄ«ЁЄ Ё гЄ §лў п Ё¬п ⥬л, Ё¬п н«Ґ¬Ґв , д®а¬ в ¤ ле Ё ¤аҐб
¤ ле.
„ лҐ Їа®зЁвлў овбп бҐаўҐа®¬ б Ї®¬®ймо дгЄжЁЁ DDEGetData.
‚ б«гз Ґ гбЇҐи®Ј® § ўҐаиҐЁп ®ЇҐа жЁЁ бҐаўҐа ®Ўп§ ў®§ўа вЁвм ў
DDEML Ї®¤вўҐа¦¤ҐЁҐ, ў®§ўа й п ЇаЁ ўл室Ґ Ё§ дгЄжЁЁ ®вЄ«ЁЄ
§ 票Ґ DDE_FAck.
я2ЏҐаҐ¤ з ¤ ле ®в бҐаўҐа ЎҐ§ § Їа®б ®в Є«ЁҐв
…б«Ё Є«ЁҐвг Ґ®Ўе®¤Ё¬® Ї®бв®п® б«Ґ¤Ёвм § Ё§¬ҐҐЁп¬Ё
¤ ле, ® ¬®¦Ґв ᮧ¤ вм advise loop - Ё§ўҐй ойЁ© Є «.
€§ўҐй ойЁ© Є « ¬®¦Ґв Ўлвм ᮧ¤ ¤ўге вЁЇ®ў:
- ⥯«л© Є «, ў Є®в®а®¬ ЇаЁ Ё§¬ҐҐЁЁ ¤ ле бҐаўҐа
Ї®бл« Ґв Є«ЁҐвг Ё§ўҐйҐЁҐ ® ⮬, зв® ¤ лҐ Ё§¬ҐЁ«Ёбм,
Є«ЁҐв, ЇаЁпў Ё§ўҐйҐЁҐ, Ї®бл« Ґв бҐаўҐаг § Їа®б Ї®«г票Ґ
¤ ле. „ «ҐҐ Є«ЁҐв Ё бҐаўҐа дгЄжЁ®Ёагов Ї® «Ј®аЁв¬г ®Ў¬Ґ
¤ ле Ї® § Їа®бг ®в Є«ЁҐв .
- Ј®апзЁ© Є «, Є®Ј¤ ЇаЁ Ё§¬ҐҐЁпе ¤ ле бҐаўҐа ба §г ¦Ґ
ЇҐаҐ¤ Ґв Ёе Є«ЁҐвг ЎҐ§ ЇаҐ¤ў аЁвҐ«м®Ј® Ё§ўҐйҐЁп.
’аЁ «Ј®аЁв¬ ЇҐаҐ¤ зЁ ¤ ле:
- ЇҐаҐ¤ з ¤ ле Ї® § Їа®бг ®в Є«ЁҐв ;
- ЇҐаҐ¤ з Ї® ⥯«®¬г Є «г;
- ЇҐаҐ¤ з Ї® Ј®ап祬㠪 «г,
а §«Ёз овбп Ї®ўл襨Ґ¬ Јаг§ЄЁ Є «. ‘ нв®© в®зЄЁ §аҐЁп
ЁЎ®«ҐҐ ЇаҐ¤Ї®звЁвҐ«мл¬ б«Ґ¤гҐв бзЁв вм ЇҐаўл© «Ј®аЁв¬,
Ё¬ҐҐҐ ЇаҐ¤Ї®звЁвҐ«мл¬ - ваҐвЁ©.
ђ бᬮваЁ¬ ЇаЁ¬Ґа дгЄжЁ®Ёа®ў Ёп Ј®ап祣® Ё§ўҐй о饣®
Є « .
ѓ®апзЁ© Ё§ўҐй ойЁ© Є « ᮧ¤ Ґвбп Ї® ЁЁжЁ вЁўҐ Є«ЁҐв
Їг⥬ ЇҐаҐ¤ зЁ ва § ЄжЁЁ xtyp_AdvStart ў ўл§®ўҐ дгЄжЁЁ
DDEClientTransaction.
ќв ва § ЄжЁп ЇҐаҐ¤ Ґвбп бҐаўҐаг Їг⥬ ўл§®ў ҐЈ® дгЄжЁЁ
®вЄ«ЁЄ .
…б«Ё бҐаўҐа Ї®¤¤Ґа¦Ёў Ґв ᮧ¤ ЁҐ Ё§ўҐй о饣® Є « , в® ЇаЁ
Є ¦¤ле Ё§¬ҐҐЁпе ¤ ле ® ¤®«¦Ґ ⥯Ґам ўл§лў вм дгЄжЁо
DDEPostAdvise(...),
Є®в®а®© ЇҐаҐ¤ овбп Ё¬Ґ вҐ¬л Ё н«Ґ¬Ґв , ®ЇЁблў ойЁе
Ё§¬ҐЁўиЁҐбп ¤ лҐ.
‚맮ў дгЄжЁЁ DDEPostAdvise ЇаЁў®¤Ёв Є ⮬г, зв® DDEML
Ї®бл« Ґв ва § ЄжЁо xtyp_AdvReq бҐаўҐаг. ”гЄжЁп ®вЄ«ЁЄ бҐаўҐа
ў®§ўа й Ґв ббл«Єг Ё§¬ҐҐлҐ ¤ лҐ в ЄЁ¬ ¦Ґ бЇ®б®Ў®¬, Є Є
бҐаўҐа ¤Ґ« « ЇаЁ ॠЄжЁЁ ва § ЄжЁо xtyp_Request, в.Ґ.,
ўл§лў п дгЄжЁо DDECreateDataHandle.
Џ®«гзЁў ббл«Єг ¤ лҐ, DDEML Ї®бл« Ґв ва § ЄжЁо
xtyp_Advdata Є«ЁҐвг, ЇҐаҐ¤ ў п Ґ¬г нвг ббл«Єг. Љ«ЁҐв
Їа®зЁвлў Ґв ¤ лҐ ў бў®Ґ© дгЄжЁЁ ®вЄ«ЁЄ б Ї®¬®ймо дгЄжЁЁ
DDEGetData. ЏаЁ ўл室Ґ Ё§ дгЄжЁЁ ®вЄ«ЁЄ , ў б«гз Ґ гбЇҐи®Ј®
Їа®звҐЁп ¤ ле, Є«ЁҐв ¤®«¦Ґ ўҐагвм DDE_FAck ў DDEML.
‡ ЄалвЁҐ Ё§ўҐй о饣® Є « Їа®Ё§ў®¤Ёвбп Ї® ЁЁжЁ вЁўҐ
Є«ЁҐв ЇҐаҐ¤ 祩 ва § ЄжЁЁ xtyp_AdvStop ў DDEML.
‘ҐаўҐа, Ї®«гзЁў нвг ва § ЄжЁо, ¤®«¦Ґ ЇаҐ¤гᬮваҐвм ®вЄ §
®в Ї®б«Ґ¤гойЁе ўл§®ў®ў дгЄжЁЁ DDEPostAdvise ЇаЁ Ё§¬ҐҐЁпе
¤ ле.
я1ђ §алў б®Ґ¤ЁҐЁп
ђ §алў б®Ґ¤ЁҐЁп ¬®¦Ґв Ўлвм Їа®Ё§ўҐ¤Ґ Є Є Ї® ЁЁжЁ вЁўҐ
Є«ЁҐв , в Є Ё Ї® ЁЁжЁ вЁўҐ бҐаўҐа .
ђ §алў б®Ґ¤ЁҐЁп Їа®Ё§ў®¤Ёвбп ўл§®ў®¬ дгЄжЁЁ
DDEDisconnect(...),
Є®в®а®© ЇҐаҐ¤ Ґвбп Ё¤ҐвЁдЁЄ в®а а §алў Ґ¬®Ј® Є « .
‚ ®вўҐв нв®в ўл§®ў DDEML ЇҐаҐ¤ Ґв ва § ЄжЁо
xtyp_Disconnect Ї авҐаг Ї® бўп§Ё.
„Ґ©бвўЁп Ї® § ўҐа襨о ᮥ¤ЁҐЁп ўЄ«оз ов ў ᥡп, Є Є
Їа ўЁ«®, ®бў®Ў®¦¤ҐЁҐ ¤Ё ¬ЁзҐбЄ®© Ї ¬пвЁ, ўл¤Ґ«пҐ¬®© Ї®¤ ЎгдҐа
¤ ле Ё Ї®¤ бва®ЄЁ, ®ЇЁблў ойЁҐ Ё¬Ґ бҐаўЁб , вҐ¬л Ё н«Ґ¬Ґв®ў.
Ља®¬Ґ в®Ј®, ЇаЁ«®¦ҐЁп - ЎлўиЁҐ Ї авҐал Ї® бўп§Ё ¤®«¦л
ўл§ў вм дгЄжЁо
DDEUninitialize,
®бў®Ў®¦¤ ойго аҐбгабл DDEML, бўп§ лҐ б ᮮ⢥вбвўгойЁ¬Ё
ЇаЁ«®¦ҐЁп¬Ё.
€, Є®Ґж, ўл§лў Ґвбп Їа®жҐ¤га
FreeProcInstance,
а §аги ой п бўп§м дгЄжЁЁ ®вЄ«ЁЄ ЇаЁ«®¦ҐЁп б® б।®©, ў Є®в®а®©
®® дгЄжЁ®ЁагҐв.
ЏҐаҐзЁб«ҐлҐ ¤Ґ©бвўЁп пў«повбп ¬ЁЁ¬ «мл¬ Ў®а®¬
¤Ґ©бвўЁ©, ॠ«Ё§гойЁе Ї аг Є«ЁҐв-бҐаўҐа.
Љ Є ўЁ¤®, ¤ ¦Ґ нв®в ¬ЁЁ¬ «мл© Ў®а ¤Ґ©бвўЁ© пў«пҐвбп
¤®бв в®з® б«®¦л¬. Џ®н⮬г ᮢ६ҐлҐ б।л а §а Ў®вЄЁ Їа®Ја ¬¬
бв६пвбп ®Ў«ҐЈзЁвм Їа®ҐЄвЁа®ў ЁҐ DDE-ЇаЁ«®¦ҐЁ©. ‚ Є зҐб⢥
ЇаЁ¬Ґа в Є®Ј® бв६«ҐЁп а бᬮваЁ¬ ЇаЁжЁЇл ᮧ¤ Ёп
DDE-ЇаЁ«®¦ҐЁ© ў б।Ґ Delphi.
я2ЋаЈ Ё§ жЁп ®Ў¬Ґ ¤ л¬Ё Ї® Їа®в®Є®«г DDE
я2¬Ґ¦¤г Delphi-ЇаЁ«®¦ҐЁп¬Ё
‚ Delphi-б।Ґ ЇаЁ«®¦ҐЁп DDE-бҐаўҐа Ё DDE-Є«ЁҐв ᮧ¤ овбп
Їг⥬ ўЄ«озҐЁп ў д®а¬г бЇҐжЁ «Ё§Ёа®ў ле ҐўЁ§г «мле
Є®¬Ї®Ґв®ў:
- Є®¬Ї®Ґвл TDDEServerConv Ё TDDEServerItem ўЄ«оз овбп ў
ЇаЁ«®¦ҐЁҐ-бҐаўҐа;
- Є®¬Ї®Ґвл TDDEClientConv Ё TDDEClientItem ўЄ«оз овбп ў
ЇаЁ«®¦ҐЁҐ-Є«ЁҐв.
‘®®вўҐвбвўгой п бва®©Є бў®©бвў Є®¬Ї®Ґв®ў нв ЇҐ
Їа®ҐЄвЁа®ў Ёп ЇаЁ«®¦ҐЁ© ®ЎҐбЇҐзЁў Ґв ў§ Ё¬®¤Ґ©бвўЁҐ ЇаЁ«®¦ҐЁ©
ЇаЁ Ёе ўлЇ®«ҐЁЁ.
ђ бᬮваЁ¬ Ї®б«Ґ¤®ў вҐ«м® нв Їл ᮧ¤ Ёп DDE-бҐаўҐа Ё
DDE-Є«ЁҐв ў б।Ґ Delphi.
я_я1‘®§¤ ЁҐ DDE-бҐаўҐа
1. Љ®¬Ї®Ґвл DDEServerConv Ё TDDEServerItem Ї®¬Ґй овбп ў
д®а¬г. ‘। Їа®ҐЄвЁа®ў Ёп ўв®¬ вЁзҐбЄЁ ЇаЁбў Ёў Ґв Є®¬Ї®Ґв ¬
Ё¬Ґ :
DDEServerConv1 Ё DDEServerItem1.
2. Џа®Ё§ў®¤Ёвбп бўп§лў ЁҐ Є®¬Ї®Ґв®ў DDEServerConv1 Ё
DDEServerItem1 Їг⥬ ЇаЁбў Ёў Ёп бў®©бвўг ServerConv Є®¬Ї®Ґв
TDDEServerItem § 票п, а ў®Ј® Ё¬ҐЁ Є®¬Ї®Ґв TDDEServerConv
- DDEServerConv1.
„ ®Ґ ЇаЁбў Ёў ЁҐ Ї®§ў®«пҐв бўп§ вм Є®¬Ї®Ґвл в®«мЄ® ў®
ўаҐ¬п Їа®ҐЄвЁа®ў Ёп ЇаЁ«®¦ҐЁп, ® ¤«п в®Ј®, зв®Ўл ®Ё ®Є § «Ёбм
бўп§ л¬Ё Ё ў® ўаҐ¬п ўлЇ®«ҐЁп, Ґ®Ўе®¤Ё¬® ў ЁЁжЁ «Ё§ жЁ®®©
з бвЁ ЇаЁ«®¦ҐЁп ᤥ« вм пў®Ґ ЇаЁбў Ёў ЁҐ:
DDEServerItem1.ServerConv := DDEServerConv1;
3. ‘Ёб⥬ ваҐега®ўҐў®© ¤аҐб жЁЁ ¤ ле ўлЈ«п¤Ёв б«Ґ¤гойЁ¬
®Ўа §®¬:
- Ё¬п бҐаўЁб - Ё¬п ЁбЇ®«пҐ¬®Ј® д ©« ЇаЁ«®¦ҐЁп-бҐаўҐа ,
Ё«Ё Ё¬п Їа®ҐЄв ЎҐ§ а биЁаҐЁп;
- Ё¬п ⥬л - Ё¬п Є®¬Ї®Ґв TDDEServerConv - DDEServerConv1.
- Ё¬п н«Ґ¬Ґв - Ё¬п Є®¬Ї®Ґв TDDEServerItem -
DDEServerItem1.
4. „ лҐ б®¤Ґа¦ вбп ў бў®©б⢥ Text Є®¬Ї®Ґв
TDDEServerItem.
—в®Ўл ЇҐаҐ¤ вм ¤ лҐ, ЇаҐ¤ § зҐлҐ ¤«п Є«ЁҐв®ў,
ЇаЁ¬Ґа, Ё§ Є®¬Ї®Ґв TEdit - бва®ЄЁ ўў®¤ - ў Є®¬Ї®Ґв
TDDEServerItem, Ґ®Ўе®¤Ё¬® ўлЇ®«Ёвм ЇаЁбў Ёў ЁҐ:
DDEServerItem1.Text := Edit1.Text;
Ј¤Ґ Edit1 - Ё¬п Є®¬Ї®Ґв TEdit, ўЄ«о祮Ј® ў д®а¬г
ЇаЁ«®¦ҐЁп-бҐаўҐа ¤«п ®в®Ўа ¦ҐЁп ¤ ле.
„ л© вҐЄбв ¤®«¦Ґ Ўлвм ўЄ«озҐ ў ®Ўа Ў®взЁЄ б®ЎлвЁп
OnChange Є®¬Ї®Ґв TEdit.
…б«Ё Є«ЁҐв ЇҐаҐ¤ « ¤ лҐ бҐаўҐаг б Ї®¬®ймо ¬Ґв®¤
PokeData, в® ЇаЁпвлҐ бҐаўҐа®¬ ¤ лҐ ¬®Јгв Ўлвм ®в®Ўа ¦Ґл,
ЇаЁ¬Ґа, ў бва®ЄҐ । ЄвЁа®ў Ёп б«Ґ¤гойЁ¬ ®Ўа §®¬:
Edit1.Text := DDEServerItem1.Text,
„ л© вҐЄбв ¤®«¦Ґ Ўлвм ЇЁб ў ®Ўа Ў®взЁЄҐ б®ЎлвЁп
OnPokeData Є®¬Ї®Ґв TDDEServerItem.
я_я1‘®§¤ ЁҐ DDE-Є«ЁҐв
1. Љ®¬Ї®Ґвл TDDEClientConv Ё TDDEClienItem Ї®¬Ґй овбп ў
д®а¬г. ‘। Їа®ҐЄвЁа®ў Ёп ўв®¬ вЁзҐбЄЁ ЇаЁбў Ёў Ґв Ё¬ Ё¬Ґ :
DDEClientConv1 Ё DDEClientItem1.
2. Џа®Ё§ў®¤Ёвбп бўп§лў ЁҐ Є®¬Ї®Ґв®ў DDEClientConv1 Ё
DDEClientItem1 Їг⥬ ЇаЁбў Ёў Ёп бў®©бвўг DDEConv Є®¬Ї®Ґв
TDDEClientItem § 票п, а ў®Ј® Ё¬ҐЁ Є®¬Ї®Ґв TDDEClientConv
- DDEClientConv1.
„ ®Ґ ЇаЁбў Ёў ЁҐ Ї®§ў®«пҐв бўп§ вм Є®¬Ї®Ґвл в®«мЄ® ў®
ўаҐ¬п Їа®ҐЄвЁа®ў Ёп ЇаЁ«®¦ҐЁп, ® ¤«п в®Ј®, зв®Ўл ®Ё ®Є § «Ёбм
бўп§ л¬Ё Ё ў® ўаҐ¬п ўлЇ®«ҐЁп, Ґ®Ўе®¤Ё¬® ў ЁЁжЁ «Ё§ жЁ®®©
з бвЁ ЇаЁ«®¦ҐЁп ᤥ« вм пў®Ґ ЇаЁбў Ёў ЁҐ:
DDEClientItem1.DDEConv := DDEClientConv1;
3. Џа®Ё§ў®¤Ёвбп ЇаЁбў®ҐЁҐ Ё¬Ґ бҐаўЁб , вҐ¬л Ё н«Ґ¬Ґв
ᮮ⢥вбвўгойЁ¬ бў®©бвў ¬ Є®¬Ї®Ґв®ў Є«ЁҐв :
- бў®©бвўг DDEService Є®¬Ї®Ґв TDDEClientConv
ЇаЁбў Ёў Ґвбп § 票Ґ, а ў®Ґ Ё¬ҐЁ Їа®ҐЄв бҐаўҐа ;
- бў®©бвўг DDETopic Є®¬Ї®Ґв TDDEClientConv ЇаЁбў Ёў Ґвбп
§ 票Ґ, а ў®Ґ Ё¬ҐЁ Є®¬Ї®Ґв TDDEServerConv бҐаўҐа ;
- бў®©бвўг DDEItem Є®¬Ї®Ґв TDDEClientItem ЇаЁбў Ёў Ґвбп
§ 票Ґ, а ў®Ґ Ё¬ҐЁ Є®¬Ї®Ґв TDDEServerItem бҐаўҐа .
4. …б«Ё бў®©бвўг ConnectMode Є®¬Ї®Ґв TDDEClientConv
ЇаЁбў®Ёвм § 票Ґ ddeAutomatic, бў®©бвўг ServiceApplication
Є®¬Ї®Ґв TDDEClientConv ЇаЁбў®Ёвм § 票Ґ, а ў®Ґ Ї®«®¬г (б
гзҐв®¬ ЇгвЁ) Ё¬ҐЁ Їа®Ја ¬¬л бҐаўҐа , в® ЇаЁ«®¦ҐЁҐ бҐаўҐа Ўг¤Ґв
§ Јаг¦ вмбп Ё гбв ў«Ёў вм ᮥ¤ЁҐЁҐ б Є«ЁҐв®¬ ўв®¬ вЁзҐбЄЁ
ЇаЁ § Јаг§ЄҐ Ї®б«Ґ¤ҐЈ®.
‘® бв®а®л Є«ЁҐв ᮥ¤ЁҐЁҐ гбв ў«Ёў Ґвбп ўл§®ў®¬ ¬Ґв®¤
SetLink,
Є®в®а®¬г ЇҐаҐ¤ овбп бва®ЄЁ б Ё¬Ґ ¬Ё бҐаўЁб Ё ⥬л.
5. ‡ Їа®б ¤ ле ®в бҐаўҐа ўлЇ®«пҐвбп Їг⥬ ўл§®ў ¬Ґв®¤
DDEClientConv1.RequestData(DDEClientItem1.DDEItem)
Є®¬Ї®Ґв TDDEClientConv, ЇҐаҐ¤ ў п ЇаЁ н⮬ ¤ ®¬г ¬Ґв®¤г Ё¬п
§ Їа иЁў Ґ¬®Ј® н«Ґ¬Ґв ¤ ле. „ л© ¬Ґв®¤ ў®§ўа й Ґв гЄ § ⥫м
ASCIIZ-бва®Єг, ᮤҐа¦ йго ¤ лҐ.
6. ЏҐаҐ¤ з ¤ ле ®в Є«ЁҐв бҐаўҐаг ўлЇ®«пҐвбп Їг⥬
ўл§®ў ¬Ґв®¤
DDEClientConv1.PokeData(...),
Є®в®а®¬г ЇҐаҐ¤ овбп Ё¬п н«Ґ¬Ґв ¤ ле Ё гЄ § ⥫м
ASCIIZ-бва®Єe, ᮤҐа¦ йго ЇҐаҐ¤ ў Ґ¬лҐ ¤ лҐ.
7. ‘ ¬Ё ¤ лҐ б®¤Ґа¦ вбп ў бў®©б⢥ Text Є®¬Ї®Ґв
TDDEClientItem Ё ®Ў®ў«повбп ў¬ҐбвҐ б ¤ л¬Ё бҐаўҐа .
„ лҐ ¬®Јгв ўлў®¤Ёвмбп ў бва®Єг । ЄвЁа®ў Ёп Edit1 вЁЇ
TEdit б Ї®¬®ймо ЇаЁбў Ёў Ёп:
Edit1.Text := DDEClientItem1.Text;
“Є § п бва®Є ¤®«¦ Ўлвм ўЄ«озҐ ў ®Ўа Ў®взЁЄ б®ЎлвЁп
OnChange Є®¬Ї®Ґв TDDClientItem.
8. ђ §алў б®Ґ¤ЁҐЁп ўлЇ®«пҐвбп Ї® ЁЁжЁ вЁўҐ Є«ЁҐв
¬Ґв®¤®¬ CloseLink Є®¬Ї®Ґв TDDEClientConv.
Љ Є ўЁ¤® Ё§ ЇаЁўҐ¤Ґ®Ј® ®ЇЁб Ёп, ўЁ§г «м п б।
Їа®ҐЄвЁа®ў Ёп Ё§Ў ў«пҐв а §а Ў®взЁЄ ®в ¬ ббл агвЁле Їа®жҐ¤га
Ї® гбв ®ў«ҐЁо ў§ Ё¬®¤Ґ©бвўЁп ¬Ґ¦¤г DDE-ЇаЁ«®¦ҐЁп¬Ё, бў®¤п Ёе Є
ўлЎ®аг Ї®¤е®¤пйЁе бў®©бвў бЇҐжЁ «Ё§Ёа®ў ле Є®¬Ї®Ґв®ў Ё
ЇЁб Ёо Є®¤®ў, ®ЇЁблў ойЁе ॠЄжЁЁ Є®¬Ї®Ґв®ў Ё§¬ҐҐЁп
нвЁе бў®©бвў ў® ўаҐ¬п ўлЇ®«ҐЁп Їа®Ја ¬¬л.
Љ«ЁҐв Ї®бл« Ґв ¤ лҐ бҐаўҐаг, ЁбЇ®«м§гп ва § ЄжЁо
xtyp_Poke ў ўл§®ўҐ дгЄжЁЁ DDEClientTransaction. ‚ нвг дгЄжЁо
в Є¦Ґ ЇҐаҐ¤ овбп Ё¬п ⥬л, Ё¬п н«Ґ¬Ґв , д®а¬ в ¤ ле Ё ¤аҐб
¤ ле.
DDEML ЇҐаҐ¤ Ґв ва § ЄжЁо бҐаўҐаг, ўл§лў п ҐЈ® дгЄжЁо
®вЄ«ЁЄ Ё гЄ §лў п Ё¬п ⥬л, Ё¬п н«Ґ¬Ґв , д®а¬ в ¤ ле Ё ¤аҐб
¤ ле.
„ лҐ Їа®зЁвлў овбп бҐаўҐа®¬ б Ї®¬®ймо дгЄжЁЁ DDEGetData.
‚ б«гз Ґ гбЇҐи®Ј® § ўҐаиҐЁп ®ЇҐа жЁЁ бҐаўҐа ®Ўп§ ў®§ўа вЁвм ў
DDEML Ї®¤вўҐа¦¤ҐЁҐ, ў®§ўа й п ЇаЁ ўл室Ґ Ё§ дгЄжЁЁ ®вЄ«ЁЄ
§ 票Ґ DDE_FAck.
я2ЏҐаҐ¤ з ¤ ле ®в бҐаўҐа ЎҐ§ § Їа®б ®в Є«ЁҐв
…б«Ё Є«ЁҐвг Ґ®Ўе®¤Ё¬® Ї®бв®п® б«Ґ¤Ёвм § Ё§¬ҐҐЁп¬Ё
¤ ле, ® ¬®¦Ґв ᮧ¤ вм advise loop - Ё§ўҐй ойЁ© Є «.
€§ўҐй ойЁ© Є « ¬®¦Ґв Ўлвм ᮧ¤ ¤ўге вЁЇ®ў:
- ⥯«л© Є «, ў Є®в®а®¬ ЇаЁ Ё§¬ҐҐЁЁ ¤ ле бҐаўҐа
Ї®бл« Ґв Є«ЁҐвг Ё§ўҐйҐЁҐ ® ⮬, зв® ¤ лҐ Ё§¬ҐЁ«Ёбм,
Є«ЁҐв, ЇаЁпў Ё§ўҐйҐЁҐ, Ї®бл« Ґв бҐаўҐаг § Їа®б Ї®«г票Ґ
¤ ле. „ «ҐҐ Є«ЁҐв Ё бҐаўҐа дгЄжЁ®Ёагов Ї® «Ј®аЁв¬г ®Ў¬Ґ
¤ ле Ї® § Їа®бг ®в Є«ЁҐв .
- Ј®апзЁ© Є «, Є®Ј¤ ЇаЁ Ё§¬ҐҐЁпе ¤ ле бҐаўҐа ба §г ¦Ґ
ЇҐаҐ¤ Ґв Ёе Є«ЁҐвг ЎҐ§ ЇаҐ¤ў аЁвҐ«м®Ј® Ё§ўҐйҐЁп.
’аЁ «Ј®аЁв¬ ЇҐаҐ¤ зЁ ¤ ле:
- ЇҐаҐ¤ з ¤ ле Ї® § Їа®бг ®в Є«ЁҐв ;
- ЇҐаҐ¤ з Ї® ⥯«®¬г Є «г;
- ЇҐаҐ¤ з Ї® Ј®ап祬㠪 «г,
а §«Ёз овбп Ї®ўл襨Ґ¬ Јаг§ЄЁ Є «. ‘ нв®© в®зЄЁ §аҐЁп
ЁЎ®«ҐҐ ЇаҐ¤Ї®звЁвҐ«мл¬ б«Ґ¤гҐв бзЁв вм ЇҐаўл© «Ј®аЁв¬,
Ё¬ҐҐҐ ЇаҐ¤Ї®звЁвҐ«мл¬ - ваҐвЁ©.
ђ бᬮваЁ¬ ЇаЁ¬Ґа дгЄжЁ®Ёа®ў Ёп Ј®ап祣® Ё§ўҐй о饣®
Є « .
ѓ®апзЁ© Ё§ўҐй ойЁ© Є « ᮧ¤ Ґвбп Ї® ЁЁжЁ вЁўҐ Є«ЁҐв
Їг⥬ ЇҐаҐ¤ зЁ ва § ЄжЁЁ xtyp_AdvStart ў ўл§®ўҐ дгЄжЁЁ
DDEClientTransaction.
ќв ва § ЄжЁп ЇҐаҐ¤ Ґвбп бҐаўҐаг Їг⥬ ўл§®ў ҐЈ® дгЄжЁЁ
®вЄ«ЁЄ .
…б«Ё бҐаўҐа Ї®¤¤Ґа¦Ёў Ґв ᮧ¤ ЁҐ Ё§ўҐй о饣® Є « , в® ЇаЁ
Є ¦¤ле Ё§¬ҐҐЁпе ¤ ле ® ¤®«¦Ґ ⥯Ґам ўл§лў вм дгЄжЁо
DDEPostAdvise(...),
Є®в®а®© ЇҐаҐ¤ овбп Ё¬Ґ вҐ¬л Ё н«Ґ¬Ґв , ®ЇЁблў ойЁе
Ё§¬ҐЁўиЁҐбп ¤ лҐ.
‚맮ў дгЄжЁЁ DDEPostAdvise ЇаЁў®¤Ёв Є ⮬г, зв® DDEML
Ї®бл« Ґв ва § ЄжЁо xtyp_AdvReq бҐаўҐаг. ”гЄжЁп ®вЄ«ЁЄ бҐаўҐа
ў®§ўа й Ґв ббл«Єг Ё§¬ҐҐлҐ ¤ лҐ в ЄЁ¬ ¦Ґ бЇ®б®Ў®¬, Є Є
бҐаўҐа ¤Ґ« « ЇаЁ ॠЄжЁЁ ва § ЄжЁо xtyp_Request, в.Ґ.,
ўл§лў п дгЄжЁо DDECreateDataHandle.
Џ®«гзЁў ббл«Єг ¤ лҐ, DDEML Ї®бл« Ґв ва § ЄжЁо
xtyp_Advdata Є«ЁҐвг, ЇҐаҐ¤ ў п Ґ¬г нвг ббл«Єг. Љ«ЁҐв
Їа®зЁвлў Ґв ¤ лҐ ў бў®Ґ© дгЄжЁЁ ®вЄ«ЁЄ б Ї®¬®ймо дгЄжЁЁ
DDEGetData. ЏаЁ ўл室Ґ Ё§ дгЄжЁЁ ®вЄ«ЁЄ , ў б«гз Ґ гбЇҐи®Ј®
Їа®звҐЁп ¤ ле, Є«ЁҐв ¤®«¦Ґ ўҐагвм DDE_FAck ў DDEML.
‡ ЄалвЁҐ Ё§ўҐй о饣® Є « Їа®Ё§ў®¤Ёвбп Ї® ЁЁжЁ вЁўҐ
Є«ЁҐв ЇҐаҐ¤ 祩 ва § ЄжЁЁ xtyp_AdvStop ў DDEML.
‘ҐаўҐа, Ї®«гзЁў нвг ва § ЄжЁо, ¤®«¦Ґ ЇаҐ¤гᬮваҐвм ®вЄ §
®в Ї®б«Ґ¤гойЁе ўл§®ў®ў дгЄжЁЁ DDEPostAdvise ЇаЁ Ё§¬ҐҐЁпе
¤ ле.
я1ђ §алў б®Ґ¤ЁҐЁп
ђ §алў б®Ґ¤ЁҐЁп ¬®¦Ґв Ўлвм Їа®Ё§ўҐ¤Ґ Є Є Ї® ЁЁжЁ вЁўҐ
Є«ЁҐв , в Є Ё Ї® ЁЁжЁ вЁўҐ бҐаўҐа .
ђ §алў б®Ґ¤ЁҐЁп Їа®Ё§ў®¤Ёвбп ўл§®ў®¬ дгЄжЁЁ
DDEDisconnect(...),
Є®в®а®© ЇҐаҐ¤ Ґвбп Ё¤ҐвЁдЁЄ в®а а §алў Ґ¬®Ј® Є « .
‚ ®вўҐв нв®в ўл§®ў DDEML ЇҐаҐ¤ Ґв ва § ЄжЁо
xtyp_Disconnect Ї авҐаг Ї® бўп§Ё.
„Ґ©бвўЁп Ї® § ўҐа襨о ᮥ¤ЁҐЁп ўЄ«оз ов ў ᥡп, Є Є
Їа ўЁ«®, ®бў®Ў®¦¤ҐЁҐ ¤Ё ¬ЁзҐбЄ®© Ї ¬пвЁ, ўл¤Ґ«пҐ¬®© Ї®¤ ЎгдҐа
¤ ле Ё Ї®¤ бва®ЄЁ, ®ЇЁблў ойЁҐ Ё¬Ґ бҐаўЁб , вҐ¬л Ё н«Ґ¬Ґв®ў.
Ља®¬Ґ в®Ј®, ЇаЁ«®¦ҐЁп - ЎлўиЁҐ Ї авҐал Ї® бўп§Ё ¤®«¦л
ўл§ў вм дгЄжЁо
DDEUninitialize,
®бў®Ў®¦¤ ойго аҐбгабл DDEML, бўп§ лҐ б ᮮ⢥вбвўгойЁ¬Ё
ЇаЁ«®¦ҐЁп¬Ё.
€, Є®Ґж, ўл§лў Ґвбп Їа®жҐ¤га
FreeProcInstance,
а §аги ой п бўп§м дгЄжЁЁ ®вЄ«ЁЄ ЇаЁ«®¦ҐЁп б® б।®©, ў Є®в®а®©
®® дгЄжЁ®ЁагҐв.
ЏҐаҐзЁб«ҐлҐ ¤Ґ©бвўЁп пў«повбп ¬ЁЁ¬ «мл¬ Ў®а®¬
¤Ґ©бвўЁ©, ॠ«Ё§гойЁе Ї аг Є«ЁҐв-бҐаўҐа.
Љ Є ўЁ¤®, ¤ ¦Ґ нв®в ¬ЁЁ¬ «мл© Ў®а ¤Ґ©бвўЁ© пў«пҐвбп
¤®бв в®з® б«®¦л¬. Џ®н⮬г ᮢ६ҐлҐ б।л а §а Ў®вЄЁ Їа®Ја ¬¬
бв६пвбп ®Ў«ҐЈзЁвм Їа®ҐЄвЁа®ў ЁҐ DDE-ЇаЁ«®¦ҐЁ©. ‚ Є зҐб⢥
ЇаЁ¬Ґа в Є®Ј® бв६«ҐЁп а бᬮваЁ¬ ЇаЁжЁЇл ᮧ¤ Ёп
DDE-ЇаЁ«®¦ҐЁ© ў б।Ґ Delphi.
я2ЋаЈ Ё§ жЁп ®Ў¬Ґ ¤ л¬Ё Ї® Їа®в®Є®«г DDE
я2¬Ґ¦¤г Delphi-ЇаЁ«®¦ҐЁп¬Ё
‚ Delphi-б।Ґ ЇаЁ«®¦ҐЁп DDE-бҐаўҐа Ё DDE-Є«ЁҐв ᮧ¤ овбп
Їг⥬ ўЄ«озҐЁп ў д®а¬г бЇҐжЁ «Ё§Ёа®ў ле ҐўЁ§г «мле
Є®¬Ї®Ґв®ў:
- Є®¬Ї®Ґвл TDDEServerConv Ё TDDEServerItem ўЄ«оз овбп ў
ЇаЁ«®¦ҐЁҐ-бҐаўҐа;
- Є®¬Ї®Ґвл TDDEClientConv Ё TDDEClientItem ўЄ«оз овбп ў
ЇаЁ«®¦ҐЁҐ-Є«ЁҐв.
‘®®вўҐвбвўгой п бва®©Є бў®©бвў Є®¬Ї®Ґв®ў нв ЇҐ
Їа®ҐЄвЁа®ў Ёп ЇаЁ«®¦ҐЁ© ®ЎҐбЇҐзЁў Ґв ў§ Ё¬®¤Ґ©бвўЁҐ ЇаЁ«®¦ҐЁ©
ЇаЁ Ёе ўлЇ®«ҐЁЁ.
ђ бᬮваЁ¬ Ї®б«Ґ¤®ў вҐ«м® нв Їл ᮧ¤ Ёп DDE-бҐаўҐа Ё
DDE-Є«ЁҐв ў б।Ґ Delphi.
я_я1‘®§¤ ЁҐ DDE-бҐаўҐа
1. Љ®¬Ї®Ґвл DDEServerConv Ё TDDEServerItem Ї®¬Ґй овбп ў
д®а¬г. ‘। Їа®ҐЄвЁа®ў Ёп ўв®¬ вЁзҐбЄЁ ЇаЁбў Ёў Ґв Є®¬Ї®Ґв ¬
Ё¬Ґ :
DDEServerConv1 Ё DDEServerItem1.
2. Џа®Ё§ў®¤Ёвбп бўп§лў ЁҐ Є®¬Ї®Ґв®ў DDEServerConv1 Ё
DDEServerItem1 Їг⥬ ЇаЁбў Ёў Ёп бў®©бвўг ServerConv Є®¬Ї®Ґв
TDDEServerItem § 票п, а ў®Ј® Ё¬ҐЁ Є®¬Ї®Ґв TDDEServerConv
- DDEServerConv1.
„ ®Ґ ЇаЁбў Ёў ЁҐ Ї®§ў®«пҐв бўп§ вм Є®¬Ї®Ґвл в®«мЄ® ў®
ўаҐ¬п Їа®ҐЄвЁа®ў Ёп ЇаЁ«®¦ҐЁп, ® ¤«п в®Ј®, зв®Ўл ®Ё ®Є § «Ёбм
бўп§ л¬Ё Ё ў® ўаҐ¬п ўлЇ®«ҐЁп, Ґ®Ўе®¤Ё¬® ў ЁЁжЁ «Ё§ жЁ®®©
з бвЁ ЇаЁ«®¦ҐЁп ᤥ« вм пў®Ґ ЇаЁбў Ёў ЁҐ:
DDEServerItem1.ServerConv := DDEServerConv1;
3. ‘Ёб⥬ ваҐега®ўҐў®© ¤аҐб жЁЁ ¤ ле ўлЈ«п¤Ёв б«Ґ¤гойЁ¬
®Ўа §®¬:
- Ё¬п бҐаўЁб - Ё¬п ЁбЇ®«пҐ¬®Ј® д ©« ЇаЁ«®¦ҐЁп-бҐаўҐа ,
Ё«Ё Ё¬п Їа®ҐЄв ЎҐ§ а биЁаҐЁп;
- Ё¬п ⥬л - Ё¬п Є®¬Ї®Ґв TDDEServerConv - DDEServerConv1.
- Ё¬п н«Ґ¬Ґв - Ё¬п Є®¬Ї®Ґв TDDEServerItem -
DDEServerItem1.
4. „ лҐ б®¤Ґа¦ вбп ў бў®©б⢥ Text Є®¬Ї®Ґв
TDDEServerItem.
—в®Ўл ЇҐаҐ¤ вм ¤ лҐ, ЇаҐ¤ § зҐлҐ ¤«п Є«ЁҐв®ў,
ЇаЁ¬Ґа, Ё§ Є®¬Ї®Ґв TEdit - бва®ЄЁ ўў®¤ - ў Є®¬Ї®Ґв
TDDEServerItem, Ґ®Ўе®¤Ё¬® ўлЇ®«Ёвм ЇаЁбў Ёў ЁҐ:
DDEServerItem1.Text := Edit1.Text;
Ј¤Ґ Edit1 - Ё¬п Є®¬Ї®Ґв TEdit, ўЄ«о祮Ј® ў д®а¬г
ЇаЁ«®¦ҐЁп-бҐаўҐа ¤«п ®в®Ўа ¦ҐЁп ¤ ле.
„ л© вҐЄбв ¤®«¦Ґ Ўлвм ўЄ«озҐ ў ®Ўа Ў®взЁЄ б®ЎлвЁп
OnChange Є®¬Ї®Ґв TEdit.
…б«Ё Є«ЁҐв ЇҐаҐ¤ « ¤ лҐ бҐаўҐаг б Ї®¬®ймо ¬Ґв®¤
PokeData, в® ЇаЁпвлҐ бҐаўҐа®¬ ¤ лҐ ¬®Јгв Ўлвм ®в®Ўа ¦Ґл,
ЇаЁ¬Ґа, ў бва®ЄҐ । ЄвЁа®ў Ёп б«Ґ¤гойЁ¬ ®Ўа §®¬:
Edit1.Text := DDEServerItem1.Text,
„ л© вҐЄбв ¤®«¦Ґ Ўлвм ЇЁб ў ®Ўа Ў®взЁЄҐ б®ЎлвЁп
OnPokeData Є®¬Ї®Ґв TDDEServerItem.
я_я1‘®§¤ ЁҐ DDE-Є«ЁҐв
1. Љ®¬Ї®Ґвл TDDEClientConv Ё TDDEClienItem Ї®¬Ґй овбп ў
д®а¬г. ‘। Їа®ҐЄвЁа®ў Ёп ўв®¬ вЁзҐбЄЁ ЇаЁбў Ёў Ґв Ё¬ Ё¬Ґ :
DDEClientConv1 Ё DDEClientItem1.
2. Џа®Ё§ў®¤Ёвбп бўп§лў ЁҐ Є®¬Ї®Ґв®ў DDEClientConv1 Ё
DDEClientItem1 Їг⥬ ЇаЁбў Ёў Ёп бў®©бвўг DDEConv Є®¬Ї®Ґв
TDDEClientItem § 票п, а ў®Ј® Ё¬ҐЁ Є®¬Ї®Ґв TDDEClientConv
- DDEClientConv1.
„ ®Ґ ЇаЁбў Ёў ЁҐ Ї®§ў®«пҐв бўп§ вм Є®¬Ї®Ґвл в®«мЄ® ў®
ўаҐ¬п Їа®ҐЄвЁа®ў Ёп ЇаЁ«®¦ҐЁп, ® ¤«п в®Ј®, зв®Ўл ®Ё ®Є § «Ёбм
бўп§ л¬Ё Ё ў® ўаҐ¬п ўлЇ®«ҐЁп, Ґ®Ўе®¤Ё¬® ў ЁЁжЁ «Ё§ жЁ®®©
з бвЁ ЇаЁ«®¦ҐЁп ᤥ« вм пў®Ґ ЇаЁбў Ёў ЁҐ:
DDEClientItem1.DDEConv := DDEClientConv1;
3. Џа®Ё§ў®¤Ёвбп ЇаЁбў®ҐЁҐ Ё¬Ґ бҐаўЁб , вҐ¬л Ё н«Ґ¬Ґв
ᮮ⢥вбвўгойЁ¬ бў®©бвў ¬ Є®¬Ї®Ґв®ў Є«ЁҐв :
- бў®©бвўг DDEService Є®¬Ї®Ґв TDDEClientConv
ЇаЁбў Ёў Ґвбп § 票Ґ, а ў®Ґ Ё¬ҐЁ Їа®ҐЄв бҐаўҐа ;
- бў®©бвўг DDETopic Є®¬Ї®Ґв TDDEClientConv ЇаЁбў Ёў Ґвбп
§ 票Ґ, а ў®Ґ Ё¬ҐЁ Є®¬Ї®Ґв TDDEServerConv бҐаўҐа ;
- бў®©бвўг DDEItem Є®¬Ї®Ґв TDDEClientItem ЇаЁбў Ёў Ґвбп
§ 票Ґ, а ў®Ґ Ё¬ҐЁ Є®¬Ї®Ґв TDDEServerItem бҐаўҐа .
4. …б«Ё бў®©бвўг ConnectMode Є®¬Ї®Ґв TDDEClientConv
ЇаЁбў®Ёвм § 票Ґ ddeAutomatic, бў®©бвўг ServiceApplication
Є®¬Ї®Ґв TDDEClientConv ЇаЁбў®Ёвм § 票Ґ, а ў®Ґ Ї®«®¬г (б
гзҐв®¬ ЇгвЁ) Ё¬ҐЁ Їа®Ја ¬¬л бҐаўҐа , в® ЇаЁ«®¦ҐЁҐ бҐаўҐа Ўг¤Ґв
§ Јаг¦ вмбп Ё гбв ў«Ёў вм ᮥ¤ЁҐЁҐ б Є«ЁҐв®¬ ўв®¬ вЁзҐбЄЁ
ЇаЁ § Јаг§ЄҐ Ї®б«Ґ¤ҐЈ®.
‘® бв®а®л Є«ЁҐв ᮥ¤ЁҐЁҐ гбв ў«Ёў Ґвбп ўл§®ў®¬ ¬Ґв®¤
SetLink,
Є®в®а®¬г ЇҐаҐ¤ овбп бва®ЄЁ б Ё¬Ґ ¬Ё бҐаўЁб Ё ⥬л.
5. ‡ Їа®б ¤ ле ®в бҐаўҐа ўлЇ®«пҐвбп Їг⥬ ўл§®ў ¬Ґв®¤
DDEClientConv1.RequestData(DDEClientItem1.DDEItem)
Є®¬Ї®Ґв TDDEClientConv, ЇҐаҐ¤ ў п ЇаЁ н⮬ ¤ ®¬г ¬Ґв®¤г Ё¬п
§ Їа иЁў Ґ¬®Ј® н«Ґ¬Ґв ¤ ле. „ л© ¬Ґв®¤ ў®§ўа й Ґв гЄ § ⥫м
ASCIIZ-бва®Єг, ᮤҐа¦ йго ¤ лҐ.
6. ЏҐаҐ¤ з ¤ ле ®в Є«ЁҐв бҐаўҐаг ўлЇ®«пҐвбп Їг⥬
ўл§®ў ¬Ґв®¤
DDEClientConv1.PokeData(...),
Є®в®а®¬г ЇҐаҐ¤ овбп Ё¬п н«Ґ¬Ґв ¤ ле Ё гЄ § ⥫м
ASCIIZ-бва®Єe, ᮤҐа¦ йго ЇҐаҐ¤ ў Ґ¬лҐ ¤ лҐ.
7. ‘ ¬Ё ¤ лҐ б®¤Ґа¦ вбп ў бў®©б⢥ Text Є®¬Ї®Ґв
TDDEClientItem Ё ®Ў®ў«повбп ў¬ҐбвҐ б ¤ л¬Ё бҐаўҐа .
„ лҐ ¬®Јгв ўлў®¤Ёвмбп ў бва®Єг । ЄвЁа®ў Ёп Edit1 вЁЇ
TEdit б Ї®¬®ймо ЇаЁбў Ёў Ёп:
Edit1.Text := DDEClientItem1.Text;
“Є § п бва®Є ¤®«¦ Ўлвм ўЄ«озҐ ў ®Ўа Ў®взЁЄ б®ЎлвЁп
OnChange Є®¬Ї®Ґв TDDClientItem.
8. ђ §алў б®Ґ¤ЁҐЁп ўлЇ®«пҐвбп Ї® ЁЁжЁ вЁўҐ Є«ЁҐв
¬Ґв®¤®¬ CloseLink Є®¬Ї®Ґв TDDEClientConv.
Љ Є ўЁ¤® Ё§ ЇаЁўҐ¤Ґ®Ј® ®ЇЁб Ёп, ўЁ§г «м п б।
Їа®ҐЄвЁа®ў Ёп Ё§Ў ў«пҐв а §а Ў®взЁЄ ®в ¬ ббл агвЁле Їа®жҐ¤га
Ї® гбв ®ў«ҐЁо ў§ Ё¬®¤Ґ©бвўЁп ¬Ґ¦¤г DDE-ЇаЁ«®¦ҐЁп¬Ё, бў®¤п Ёе Є
ўлЎ®аг Ї®¤е®¤пйЁе бў®©бвў бЇҐжЁ «Ё§Ёа®ў ле Є®¬Ї®Ґв®ў Ё
ЇЁб Ёо Є®¤®ў, ®ЇЁблў ойЁе ॠЄжЁЁ Є®¬Ї®Ґв®ў Ё§¬ҐҐЁп
нвЁе бў®©бвў ў® ўаҐ¬п ўлЇ®«ҐЁп Їа®Ја ¬¬л.