ox
Size: a a a
ox
Скрипт для трансляции с подобных скриптов в autoit формат
К примеру
//////////////////////////////
enum Type {
Ver0,
Ver1,
Ver2
}
struct test_t {
Type type;
int32_t i32;
};
struct parent_t {
test_t test;
test_t testArr[10];
int32_t iarr[10][10];
};
//////////////////////////////
В autoit можно работать с этими структурами так
//////////////////////////////
local $obj = parent_t()
$obj.test.type = $Ver0
local $tmp0 = $obj.testArr
local $tmp1 = $tmp0[0]
$tmp1.i32 = 50
$tmp0[0] = $tmp1
$obj.testArr = $tmp0
; дальше можно отправить ее параметром винапи функции например
local $struct = ObjToStruct($obj)
; из структуры в объект
local $obj2 = ObjFromStruct(parent_t, $struct)
; или так
local $obj3 = ObjReadMemory(parent_t, DllStructGetPtr($struct) )
MsgBox("", "$obj2.testArr[0].i32", $obj2.testArr[0].i32)
MsgBox("", "$obj3.testArr[0].i32", $obj3.testArr[0].i32)
//////////////////////////////
Для работы скрипта нужна Nodejs, лучше последней версии
Запускать так:
node parseStructures.js -src "./struct.h" -dst "struct.au3"
Скрипт запустится, и будет следить за всеми файлами-зависимостями, автоматически перекомпилируя
при любых изменениях
//////////////////////////////
// также можно включать и другие файлы
#include "struct2.h"
ДК
ED
IL
Ra
ox
uint8_t : 'byte' ,вот базовые типы доступные для структур(справа аналог в аите)
uint16_t: 'word' ,
uint32_t: 'dword' ,
uint64_t: 'uint64',
int8_t : 'byte' ,
int16_t : 'short',
int32_t : 'int' ,
int64_t : 'int64',
float : 'float',
double : 'double',
char : 'byte' ,
int_ptr : 'int_ptr',
uint_ptr: 'uint_ptr',
Ra
Ra