本帖最后由 junyee 于 2021-3-13 08:54 编辑
你没理解我的意思..
AU3 没有指针,但str类型是以指针的方式传递.
我想用 Binary 转为 string 变通实现指针传递.
可以工作.Local $vDllAns = DllCall($hDll, 'int', 'SendByteArray', 'str', BinaryToString("0xFEFE94E003FD"), 'int', 6, 'int', 10 )
这个就不行Local $vDllAns = DllCall($hDll, 'int', 'SendByteArray', 'str', BinaryToString("0xFE0094E003FD"), 'int', 6, 'int', 10 )
在传递时时字符串被破坏.或者说是new 了一个变量.我讨论不是AU3 这种处理方式是否不妥(事实上是很妥当的,向不明函数传递一个指针是很危险的),
而是我这个变通的方法在此行不通.
用C写个示例你就明白了.
#include "stdio.h"
void test(char* str)
{
int i;
printf("\n%s\n",str);
for (i=0;i<12;i++){
printf("%02x ", *(str++));
}
}
int main(int args, char* argc[])
{
char str[16] ="hello,world!";
test(str);
str[4]=0;
test(str);
return 0;
}
|