Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > DDE с ожиданием


Автор: Voron2 4.5.2004, 06:03
sad.gif Есть такая проблема: создаю в Ц++Билдере ДДЕ сервер, на нем толлько DDEServerConv, и клиент, который выполняет ExecuteMacro. Макрос отсылается нормально, проблема в другом! Если поставить WaitStat - false , макрос просто отсылается и программа идет дальше, а мне надо, чтобы клиент ждал завершения макроса, но если ставить WaitStat - true , то соединение умирает и сервер как бы бесконечно выполняет макрос.
Спасибо!

Автор: Tinto 16.5.2004, 08:24
День добрый Voron2! Я тоже занялся DDE. Необходимо одновременно подавать звук на LineOut и записывать с LineIn и строить графики звука по обеим каналам. Нашел программку, которая может это делать и имеет DDE. SpectraLAB называется. Вроде бы все пока работает, т.е открывается SpectraLAB, происходит Link с моей программой, а вот дальше я должен послать команду SpectraLAB и не получается. Что- то я делаю неправильно. У меня в программе след. код:
ShellExecute(Handle,"open","d:\\speclab\\bin\\softest",
NULL,NULL,SW_MINIMIZE);
while(!DdeClientConv1->SetLink("Softest","Data")) //"Softest"-Server name, "Data"-Topic name
++a;
Start->Caption = DdeClientConv1->DdeService; //Подтверждение связи клиент-сервер
DdeClientConv1->ExecuteMacro(EditMacro->Text.c_str(), true); //посылаю команду
и ничего не происходит. Я посылаю команду "Play", должно играть. И еще мне непонятно, должен ли я устанавливать DdeItem в DdeClientItem1. А также ServiceApp в DdeClientConv1. Я установил в ServiceApp - Sound1, имя моей программы? notify.gif



Автор: Voron2 31.5.2004, 21:47
SetLink только задает параметры DDE!!!!!!!!!
После него поставь OpenLink()

baaa.gif Я собственно про это и спрашивал! WaitState можешь поставить в false, если сервер может выполнить твой макрос мгновенно, если же надо ждать то по идее ставишь в True, но тут как раз и получается, что сервер как бы бесконечно выполняет макрос, а DDE не отправит ни одной комманды, пока макрос не завершится!



DDEItem устанавливаешь только если нужно динамическое соединение (связь с итемом сервера)
ServiceApp поставь в "d:\\speclab\\bin\\softest", не надо будет ShellExecute

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)