Viktor1703
AutoIT Гуру
- Сообщения
- 1,535
- Репутация
- 413
Не пойму, какой смысл от функции DllCallAddress(), понял что с помощью неё можно вызвать любую функцию
Но разве не легче
Для чего она может пригодится?
Или вот с оф.форума
Где же тогда брать ОП код?
Код:
$pPointer = DllCallbackRegister("Summ", "int", "int;int")
$Ret = DllCallAddress("int", DllCallbackGetPtr($pPointer), "int", 3, "int", 5)
DllCallbackFree($pPointer)
MsgBox(0, 'Return', $Ret[0])
Func Summ($Num1, $Num2)
Return $Num1 + $Num2
EndFunc
Но разве не легче
Код:
MsgBox(0, 'Return', Summ(3, 5))
Func Summ($Num1, $Num2)
Return $Num1 + $Num2
EndFunc
Для чего она может пригодится?
Или вот с оф.форума
Код:
MsgBox(0,"",Factorial(7))
Func Factorial($iNumber)
$bOPCode = "0xD9E8DB442404D9E8DFF1730CD9C0D9E8DEE9D9C9DECAEBEEDDD8C20400"
$iSize = BinaryLen($bOPCode)
$pBuffer = _MemVirtualAlloc(0, $iSize, $MEM_COMMIT, $PAGE_EXECUTE_READWRITE)
$tBuffer = DllStructCreate("byte[" & $iSize & "]", $pBuffer)
DllStructSetData($tBuffer, 1, $bOPCode)
$aRet = DllCallAddress("double", $pBuffer, "int", $iNumber)
_MemVirtualFree($pBuffer, $iSize, $MEM_RELEASE)
If IsArray($aRet) Then
Return $aRet[0]
Else
Return "ERROR"
EndIf
EndFunc
Где же тогда брать ОП код?