Посылает команду в другое приложение, используя динамический обмен данными (DDE).
Синтаксис:
DDEExecute(nChannelNumber, cCommand [, cUDFName])
Параметры:
nChannelNumber
Задает номер канала.
cCommand
Задает команду, которую нужно послать в другое приложение. Формат команды определяется приложением, для которого она предназначается. О том, каким должен быть синтаксис, можно узнать в документации по данному приложению.
cUDFName
Допускает асинхронные запросы на выполнение команд. Если аргумент cUDFName опущен, приложение-клиент переходит в ожидание на период времени, заданный функцией DDESetOption( ). Если аргумент cUDFName задает функцию, определенную пользователем, выполнение программы клиента будет продолжено сразу после выдачи запроса на выполнение команды.
Когда приложение-сервер завершит выполнение команды, начнет работать пользовательская функция, заданная аргументом cUDFName. Этой функции передаются шесть параметров в том порядке, как это показано в следующем списке:
Используйте функцию 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