Запросы о связи DDE в Powerbuilder - PullRequest
2 голосов
/ 15 марта 2010

У меня есть сторонний инструмент, который может отправлять или получать DDE pokes. Я использовал шпион DDE для мониторинга связи между ним и эмулятором DDE-сервера стороннего производителя, чтобы воспроизвести его с помощью Powerbuilder. Насколько я могу сказать, это использование теплых ссылок. Я попытался использовать openchannel, затем execremote, но тип вызова описывается как «execute». Аналогично, когда клиент и эмулятор запускаются, они появляются в списке зарегистрированных серверов, но мое приложение не / Я подумал об использовании user32.dll, но понимаю, что большинство вызовов DDE не будут работать с Powerbuilder, поскольку PB не поддерживает обратные вызовы. Кто-нибудь может указать мне направление информации об этой области? ..... После еще нескольких настроек я попытался открыть хотлинк. Нажав кнопку «Poke» в приложении, мой powerbuilder вызвал событие hotlinkalarm. Я могу забрать источник и т.д., но нет данных. Также мне нужно отправить инструкцию обратно, но все, что нужно сделать для ответа, это отправить истину или ложь. У меня есть некоторый код Delphi / Pascal из эмулятора DDE, но вызовы DDE выглядят несколько иначе, чем вызовы Powerbuilder.

1 Ответ

2 голосов
/ 08 октября 2010

Вы нашли ответ на это?Я не уверен, полностью ли я понимаю, что вы делаете, но вот вещи, на которые, я думаю, вам нужно обратить внимание.

StartServerDDE устанавливает ваше приложение в качестве сервера DDE, обратите внимание, чтоу вас должно быть окно, открытое как дескриптор для диалога DDE, а затем закодируйте события окна (события уровня приложения не будут работать).Возможно, поэтому вы не видели зарегистрированный сервер.Используйте StopServerDDE при завершении работы сервера DDE.

Код для следующих событий в окне сервера DDE для выполнения приема и отправки данных в соответствии с вашими требованиями:

RemoteExec событие(клиент отправил запрос) Используйте GetCommandDDE, чтобы получить командную строку, отправленную клиентом. Используйте GetCommandDDEOrigin, чтобы увидеть, какое имя клиентского приложения отправило событие

RemoteSend (клиент отправил данные) Использовать GetDataDDEчтобы получить данные (через строку ref) из клиентского приложения Используйте GetDataDDEOrigin, чтобы увидеть, какое клиентское приложение отправило событие

RemoteRequest (клиент запросил данные) Используйте SetDataDDE для отправки данных вашему клиенту DDEПриложение

Надеюсь, это поможет.

...