DDEExecute( ) Function
Sends a command to another application, using dynamic data exchange (DDE).
DDEExecute(nChannelNumber, cCommand [, cUDFName])
Return Value
Logical
Parameters
nChannelNumber
Specifies the channel number.cCommand
Specifies the command you want to send to the other application. The format of the command is determined by the application you are sending it to. Consult the application's documentation for the correct syntax.cUDFName
Allows asynchronous command execution requests. If you omit cUDFName, a client application waits for the period specified with DDESetOption( ). If you specify a user-defined function with cUDFName, client program execution continues immediately after the command execution request is made.When the server application finishes executing the command, the user-defined function you specify with cUDFName is executed. The user-defined function is passed six parameters in the order shown in the following table.
Parameter
Contents
Channel Number
The channel number of the server application.
Action
XACTCOMPLETE (successful execution).XACTFAIL (failed command execution).
Item
The item name; for example, R1C1 for a Microsoft Excel worksheet cell.
Data
The new data (REQUEST) or data passed (POKE or EXECUTED).
Format
The data format; for example, CF_TEXT.
Transaction Number
The transaction number returned by DDEExecute( ).
Use DDEAbortTrans( ) to cancel an uncompleted transaction. If the transaction fails, you can use DDELastError( ) to determine why it failed.
When you include cUDFName, DDEExecute( ) does not return a logical value. Instead, a transaction number is returned; if an error occurs, –1 is returned.
Remarks
The command sent with DDEExecute( ) must be understood by the application. Before you can execute the command, you must establish a channel to the server application with DDEInitiate( ).
For example, Microsoft Excel has an extensive set of macro commands, including DDE commands that let you request data from Visual FoxPro from within Microsoft Excel. If you establish a channel to Microsoft Excel, you can then use DDEExecute( ) to send macro commands to Excel from within Visual FoxPro.
If the receiving application successfully executes the command, DDEExecute( ) returns true (.T.). If the receiving application cannot successfully execute the command or if the channel number you include is not valid, DDEExecute( ) returns false (.F.). If the optional asynchronous user-defined function cUDFName is included, a transaction number is returned. If an error occurs, DDEExecute( ) returns –1.
Example
The following example uses DDEInitiate( ) to establish a DDE channel between Visual FoxPro and the Microsoft Excel worksheet Sheet1. DDEExecute( ) is used to execute a Microsoft Excel command that maximizes the Microsoft Excel window.
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