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


Автор: jimbo 12.8.2009, 10:17
Привет всем

Работаю с библиотекой DDEML. Win XP SP3, MSVS2005


Код


Connect();       //тут инициализация idInstSR
HSZ hszApp, hszTopic;
                            char szApp[] = "Console";
                            hszApp = DdeCreateStringHandleA(idInstSR, szApp, 0);
                            hszTopic = DdeCreateStringHandleA(idInstSR, string, 0);
                            hconvSR = DdeConnect(idInstSR,hszApp,hszTopic,0L);
HSZ hszNew5; 
                                hszNew5 = DdeCreateStringHandle(idInstSR,  "Last", CP_WINANSI); 

                                if(0==DdeClientTransaction(0,0,hconvSR,hszNew5,CF_TEXT,XTYP_ADVSTART | XTYPF_ACKREQ  ,1000,&result))
                                {//обработка ошибки - она здесь
}
DdeFreeStringHandle(idInstSR,hszNew5);

                                HSZ hszNew4; 
                                hszNew4 = DdeCreateStringHandle(idInstSR,  "Exch_Time", CP_WINANSI); 
                                if(0==DdeClientTransaction(0,0,hconvSR,hszNew4,CF_TEXT,XTYP_ADVSTART | XTYPF_ACKREQ  ,0,&result))
{
тут все нормально
}
DdeFreeStringHandle(idInstSR,hszNew4);




После первого запроса (Last) на горячее соединение выдается ошибка DMLERR_ADVACKTIMEOUT. После второго (Время) - нет.
Ошибка означает (с) MSDN
A request for a synchronous advise transaction has timed out.


Однако число в функции DdeClientTransaction(0,0,hconvSR,hszNew5,CF_TEXT,XTYP_ADVSTART | XTYPF_ACKREQ  ,1000,&result))
ничего не исправляет. 
Может кто-нибудь дать совет? даже бредовый - это все равно мысли=) У меня они кончились)

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