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

DDEExecute(nChannelNumber, cCommand [, cUDFName])

Параметры

nChannelNumber

Задает номер канала.

cCommand

Задает команду, которую вы хотите послать в другое приложение. Формат команды определяется приложением, для которого она предназначается. О том, каким должен быть синтаксис, можно узнать в документации по данному приложению.

cUDFName

Допускает асинхронные запросы на выполнение команд. Если аргумент cUDFName опущен, приложение-клиент переходит в ожидание на период времени, заданный функцией DDESetOption( ). Если аргумент cUDFName задает функцию, определенную пользователем, выполнение программы клиента будет продолжено сразу после выдачи запроса на выполнение команды.

Когда приложение-сервер завершит выполнение команды, начнет работать пользовательская функция, заданная аргументом cUDFName. Этой функции передаются шесть параметров в том порядке, как это показано в следующей таблице.

Параметр Содержимое

Channel Number (номер канала)

Номер канала приложения-сервера.

Action (действие)

XACTCOMPLETE (успешное выполнение). XACTFAIL (неудачное выполнение команды).

Item (элемент)

Имя элемента; например R1C1 для ячейки электронной таблицы Microsoft Excel

Data (данные)

Новые данные (REQUEST) или передаваемые данные (POKE или EXECUTED).

Format (формат)

Формат данных, например CF_TEXT.

Transaction Number (номер транзакции)

Номер транзакции, возвращаемый функцией DDEExecute( ).

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

Если задано имя cUDFName, DDEExecute( ) не возвращает логического значения; вместо него возвращается номер транзакции, а в случае ошибки возвращается -1.

Expand imageВозвращаемое значение

Logical

Expand imageПримечания

Команда, посылаемая функцией DDEExecute( ), должна быть понятна приложению. Перед тем как выполнить команду, необходимо установить канал связи с приложением-сервером с помощью функции DDEInitiate( ).

Например, в Microsoft Excel имеется широкий набор макрокоманд, среди которых есть и команды DDE, позволяющие запрашивать данные из Visual FoxPro, находясь в Microsoft Excel. Если установить канал с Microsoft Excel, можно будет с помощью функции DDEExecute( ) посылать макрокоманды из Visual FoxPro в Microsoft Excel.

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

Expand imageПример

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

  CopyCode imageCopy Code
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

Expand imageСмотри также