Function Reference


Calls a user-defined or built-in function contained in first parameter.

Call ( "function" [, param1 [, param2 [, paramN]]] )


function The name of function or function to call.
param Arguments that will be passed to the function being invoked.

Return Value

Success: the return value of the called function. Both @error and @extended may contain values if the called function set them.
Failure: sets the @error flag to 0xDEAD and @extended to 0xBEEF if the function does not exist or invalid number of parameters.


The function can pass arguments to functions, however, ByRef parameters are not supported; there is no way to retrieve the ByRef parameter.

A special array can be passed in lieu of individual parameters. This array must have its first element set to "CallArgArray" and elements 1 - n will be passed as separate arguments to the function. If using this special array, no other arguments can be passed to Call(). See example for a demonstration.
Both Call() itself can set the @error flag or the called function can set the @error flag. If Call() sets the @error flag, the value will be 0xDEAD and @extended will also be set to 0xBEEF. See the example for a demonstration of testing for a function that was not found.




#include <MsgBoxConstants.au3>


Func Example()
    ; This calls a function accepting no arguments.

    ; This calls a function accepting one argument and passes it an argument.
    Call("Test2", "Message from Call()!")

    ; This demonstrates how to use the special array argument.
    Local $aArgs[4]
    $aArgs[0] = "CallArgArray" ; This is required, otherwise, Call() will not recognize the array as containing arguments
    $aArgs[1] = "This is a string" ; Parameter one is a string
    $aArgs[2] = 47 ; Parameter two is a number
    Local $aArray[2]
    $aArray[0] = "Array Element 0"
    $aArray[1] = "Array Element 1"
    $aArgs[3] = $aArray ; Parameter three is an array

    ; We've built the special array, now call the function
    Call("Test3", $aArgs)

    ; Test calling a function that does not exist.  This shows the proper way to test by
    ; checking that both @error and @extended contain the documented failure values.
    Local Const $sFunction = "DoesNotExist"
    If @error = 0xDEAD And @extended = 0xBEEF Then MsgBox($MB_SYSTEMMODAL, "", "Function does not exist.")
EndFunc   ;==>Example

Func Test1()
    MsgBox($MB_SYSTEMMODAL, "", "Hello")
EndFunc   ;==>Test1

Func Test2($sMsg)
    MsgBox($MB_SYSTEMMODAL, "", $sMsg)
EndFunc   ;==>Test2

Func Test3($sString, $nNumber, $aArray)
    MsgBox($MB_SYSTEMMODAL, "", "The string is: " & @CRLF & $sString)
    MsgBox($MB_SYSTEMMODAL, "", "The number is: " & @CRLF & $nNumber)
    For $i = 0 To UBound($aArray) - 1
        MsgBox($MB_SYSTEMMODAL, "", "Array[" & $i & "] contains:" & @CRLF & $aArray[$i])
EndFunc   ;==>Test3