This call function can call any script/user function and also any native function. This is invented because mostly invented this clumsy work-around. For call with ByRef capability (but only with CallArgArray), see this post: Hopefully at some point AutoIt will treat AutoIt functions as-if they were user defined functions (or vice versa). Reposted this in a seperate thread for SEO mostly (<title> and <h1> matter most, after all). _CallAny("MsgBox", 0x20, "Hello, World", "LOL") ; This demonstrates how to use the special array argument. Local $aArgs[4] $aArgs[0] = "CallArgArray" ; This is required, otherwise, _CallAny will not recognize the array as containing arguments $aArgs[1] = 0x20 $aArgs[2] = "Hello, World" $aArgs[3] = "Example 2" _CallAny("MsgBox", $aArgs) Func _CallAny($function, $param1 = 0, $param2 = 0, $param3 = 0, $param4 = 0, $param5 = 0) Local $exec = $function & "(" If @NumParams = 2 And IsArray($param1) And UBound($param1, 0) = 1 And $param1[0] = "CallArgArray" Then For $n = 1 To UBound($param1) - 1 $exec &= "$param1[" & $n & "]," Next Else For $n = 1 To @NumParams $exec &= "$param" & $n & "," Next EndIf Local $iRet = Execute(StringTrimRight($exec, 1) & ")") Return SetError(@error, @extended, $iRet) EndFunc ;==>_CallAny To add the ability for more parameters, just add $param6 = 0, $param7 = 0. The guts of the function don't need any changes.