Не могу получить ответ от DDE-сервера

Тема в разделе "WASM.BEGINNERS", создана пользователем Gastik, 23 сен 2011.

  1. Gastik

    Gastik New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    22
    Здравствуйте!
    Первоначально делал в обычном приложении. Соединялся с DDE-сервером и по DdeClientTransaction (тип XTYP_REQUEST) без проблем читал Item. Теперь перенес это все в службу. Код обращения к DDE-серверу один в один, но DdeClientTransaction выполняется с ошибкой DMLERR_DATAACKTIMEOUT. Таймауты ставил разные.Создается впечатление, что он вообще не ждет. Даже 20000 миллисекунд ставил, а ошибку сразу дает.
    Перерыл весь инет, но ничего путного не нашел. С сервером соединяется без ошибок через DdeConnect, а DdeClientTransaction не проходит.
    Может быть кто-то поможет разобраться, или хотя бы подскажет направление где копать.
    Заранее благодарен.
     
  2. Gastik

    Gastik New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    22
    Небольшое дополнение. Использую не чистый DDE, а NetDDE, т.е имя службы DDE-сервера в виде \\Имя компьютера\NDDE$ . Все настройки для подключения делал через ddeshare. В обычном приложении все прокатывает, а в службе - нет.
    Теперь попробовал подключиться к DDE-серверу на этой же машине. Имя службы указал несетевое. Обычное приложение также подключалось, а служба даже не подключается. Ошибка DMLERR_NO_CONV_ESTABLISHED.
     
  3. paralvic

    paralvic Пархоменко Александр Викторович

    Публикаций:
    0
    Регистрация:
    20 ноя 2010
    Сообщения:
    294
    Адрес:
    Нижний Новгород
    DDE Shares
    [Network DDE is no longer supported. Nddeapi.dll is present on Windows Vista, but all function calls return NDDE_NOT_IMPLEMENTED.]

    оч слжн разб-ть кодесы на гипотетическом уровне.
    откуда импортируете функции?
    ddeml.dll - юзермодная
     
  4. Gastik

    Gastik New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    22
    Система не Vista.
    Код абсолютно любой с функциями Dde ведет себя так в службе.
    Функции импортируются из user32.

    ddeml еще и 16-разрядная:) .

    Есть версия по поводу параметра PCONVCONTEXT pCC в DdeConnect. Раньше всегда оставлял его пустым. Да и в инете во всех примерах он пустой. К стыду своему за 18 лет программирования с DDE работал очень мало, а в службах - никогда ранее. Там в CONVCONTEXT есть SECURITY_QUALITY_OF_SERVICE и скорее всего она должна быть для службы не пустая. Проверю.

    Нет. Видимо дело в чем-то другом...
     
  5. Gastik

    Gastik New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    22
    Все понял. Сам механизм DDE работает с оконными сообщениями. Отсюда вывод, что DDE нельзя использовать в службе.