Посылает команду в другое приложение, используя динамический обмен данными (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.
Возвращаемое значение
Logical
Примечания
Команда, посылаемая функцией 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 |