Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2013, 12:09   #1
Sauber
Пользователь
 
Регистрация: 21.11.2010
Сообщений: 54
По умолчанию В ответ на DDE запрос приходит идентификатор данных

Добрый день. Пытаюсь реализовать клиент, который по DDE запрашивает данные с сервера. Столкнулся с проблемой, что после запроса WM_DDE_REQUEST я получаю сообщение, делаю анпак, а атом содержит тот id эл-та который я запрашивал, хотя там должны быть данные.

Код:
  wm_dde_data:
        begin
          UnpackDDELparam(WM_DDE_DATA,lparam,addr(uiLo),addr(uiHi));//Распаковывам атрибут сообщения lparam
          FreeDDELParam(WM_DDE_DATA,lparam); //освобождаем память
          hDDEData:=uiLo;//uiLo- handle структуры типа DDEData
          pDDEData:=GlobalLock(hDDEData);//Определяем структуру данного типа
          aItem:=word(uiHi); // Из uiHi получаем атом, содержащий передаваемые данные
          if (pDDEData.Flags and $8000)=$8000 then begin  //Если требуется подтверждение, то посылаем его. Здесь происходит проверка 15-го бита
              PostMessage(hwnd_srv,WM_DDE_ACK,hwnd,PackDDELparam(WM_DDE_ACK,pDDEData.Flags,0));
          end;

          if word(pDDEData.cfFormat)=CF_PascalString then begin
            //aApp:=GlobalAddAtom('This is String');
            ce:=GlobalGetAtomName(longint(uiHi),addr(str),15);
           uiHi:=GlobalFindAtom('iteeeem1');
            ShowMessage(IntToStr(ce));
            ShowMessage(Str);
          end;
        end;
Sauber вне форума Ответить с цитированием
Старый 13.11.2013, 12:12   #2
Sauber
Пользователь
 
Регистрация: 21.11.2010
Сообщений: 54
По умолчанию

Вот код самого запроса:
Код:
aApp:=GlobalAddAtom('dde_srv');
                aTop:=GlobalAddAtom('data');
                SendMessage(hwnd_broadcast,WM_DDE_INITIATE,hwnd,MakeLong(aApp,aTop));
                aId:=GlobalAddAtom('iteeeem1');
                PostMessage(hwnd_srv,WM_DDE_REQUEST,hwnd,MakeLong(CF_PascalString,aId));
Sauber вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DDE клиент, нет соединения с DDE сервером на XE2XE2 nfo52 Общие вопросы Delphi 0 19.08.2012 09:17
Передача по DDE данных AlexZZZ2010 Общие вопросы .NET 0 20.12.2010 13:00
POST Запрос/Ответ IvanBegin Работа с сетью в Delphi 3 02.11.2010 16:50
Приходит не полный ответ Shouldercannon Общие вопросы Delphi 3 12.03.2010 21:45
Прием данных по DDE chigik Microsoft Office Excel 3 13.05.2009 10:47