Нашел в нете dll позволяющую передавать массив с данными между приложениями, но не могу
разобраться, как вернуть массив.
самодеятельность:
В общем я настолько мало знаком с использованием dll в autoit, что не уверен в правильности
передачи массива в функцию. И тем более не могу получить передаваемый по указателю
массив из функции.
Помогите пожалуйста разобраться.
разобраться, как вернуть массив.
самодеятельность:
Код:
#Include <Array.au3>
$sName='One'
$dll = DllOpen("GlobalArray.dll")
$dat=StringSplit('2,8,6,9,3,8,5,5',',')
_ArrayDisplay($dat,'Передаваемый массив')
$a=DllStructCreate('double[' & UBound($dat) & ']')
For $i=0 To UBound($dat)-1
DllStructSetData($a,1,$dat[$i],$i+1)
Next
$result = DllCall($dll,'int','GlobalArraySet','str',$sName,'ptr', DllStructGetPtr($a),'int',UBound($dat))
If @error=0 And $result[0]=0 Then MsgBox(0,'','Создан глобальный массив : ' & $sName)
$result1 = DllCall($dll,'int','GlobalArraySize','str',$sName)
If @error=0 And $result[0]>0 Then MsgBox(0,'','Размер глобального массива : ' & $sName & @LF & $result[0])
$b=DllStructCreate('double['&$result1[0]&']')
$result2 = DllCall($dll,'int','GlobalArrayGet','str',$sName,'ptr', DllStructGetPtr($b),'int',UBound($dat))
Dim $arOUT[$result1[0]]
For $i=1 To UBound($dat)
$arOUT[$i-1]=DllStructGetData($b,1,$i)
Next
_ArrayDisplay($arOUT,'Полученный массив')
$result3 = DllCall($dll,'int','GlobalArrayDelete','str',$sName)
_ArrayDisplay($result1,'Удаление GlobalArray')
$result1 = DllCall($dll,'int','GlobalArraySize','str',$sName)
_ArrayDisplay($result1,'Размер GlobalArray')
DllClose($dll)
В общем я настолько мало знаком с использованием dll в autoit, что не уверен в правильности
передачи массива в функцию. И тем более не могу получить передаваемый по указателю
массив из функции.
Помогите пожалуйста разобраться.