Функция DDEExecute( )

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

Синтаксис:

DDEExecute(nChannelNumber, cCommand [, cUDFName])

Параметры:
nChannelNumber
Задает номер канала.
cCommand
Задает команду, которую нужно послать в другое приложение. Формат команды определяется приложением, для которого она предназначается. О том, каким должен быть синтаксис, можно узнать в документации по данному приложению.
cUDFName
Допускает асинхронные запросы на выполнение команд. Если аргумент cUDFName опущен, приложение-клиент переходит в ожидание на период времени, заданный функцией DDESetOption( ). Если аргумент cUDFName задает функцию, определенную пользователем, выполнение программы клиента будет продолжено сразу после выдачи запроса на выполнение команды.
Когда приложение-сервер завершит выполнение команды, начнет работать пользовательская функция, заданная аргументом cUDFName. Этой функции передаются шесть параметров в том порядке, как это показано в следующем списке:

  1. Channel Number (номер канала) - Номер канала приложения-сервера
  2. Action (действие) - XACTCOMPLETE (успешное выполнение), XACTFAIL (неудачное выполнение команды)
  3. Item (элемент) - Имя элемента, например, R1C1 для ячейки электронной таблицы Microsoft Excel
  4. Data (данные) - Новые данные (REQUEST) или передаваемые данные (POKE или EXECUTED)
  5. Format (формат) - Формат данных, например CF_TEXT
  6. Transaction Number (номер транзакции) - Номер транзакции, возвращаемый функцией DDEExecute( )

Используйте функцию DDEAbortTrans( ) для отмены незавершенной транзакции. Если транзакция завершается с ошибкой, с помощью функции DDELastError( ) можно определить причину ошибки.
Если задано имя cUDFName, DDEExecute( ) не возвращает логического значения; вместо него возвращается номер транзакции, а в случае ошибки возвращается -1.

Результат:
Логический

Комментарии:
Допустима только в Visual FoxPro и FoxPro для Windows.
Команда, посылаемая функцией DDEExecute( ), должна быть понятна приложению. Перед тем как выполнить команду, необходимо установить канал связи с приложением-сервером с помощью функции DDEInitiate( ).
Например, в Microsoft Excel имеется широкий набор макрокоманд, среди которых есть и команды DDE, позволяющие запрашивать данные из Visual FoxPro, находясь в Microsoft Excel. Если установить канал с Microsoft Excel, можно будет с помощью функции DDEExecute( ) посылать макрокоманды из Visual FoxPro в Microsoft Excel.
Если принимающее приложение успешно выполнит команду, DDEExecute( ) возвращает значение "истина" (.T.). Если принимающее приложение не в состоянии успешно выполнить команду или если заданный номер канала оказывается недействительным, DDEExecute( ) возвращает "ложь" (.F.). Если задана асинхронная пользовательская функция cUDFName, возвращается номер транзакции. Если возникает ошибка, DDEExecute( ) возвращает -1.

Пример:

* В следующем примере функция DDEInitiate( ) устанавливает DDE канал
* между Visual FoxPro и электронной таблицей Sheet1 из Microsoft Excel.
* DDEExecute( ) используется для выполнения команды Microsoft Excel,
* которая развертывает окно Microsoft Excel до максимального размера.

gnChanNum = DDEInitiate('Excel', 'Sheet1')
IF gnChanNum != -1
	glExecute = DDEExecute(gnChanNum, '[App.Maximize]')
	IF glExecute != .F.
		WAIT WINDOW 'EXCEL window has been zoomed out.'
	ENDIF
	= DDETerminate(gnChanNum)	&& Close the channel
ENDIF

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 01.01.2003