Winapi 调用GetComputerNameA时,程序会无错误地崩溃

Winapi 调用GetComputerNameA时,程序会无错误地崩溃,winapi,autoit,computer-name,Winapi,Autoit,Computer Name,我正在尝试从AutoIt调用GetComputerNameA,这是我的代码: Local $mystruct = DllStructCreate(toStr("struct;dword;char[1024];endstruct")) DllStructSetData($mystruct, 1, 1024) Local $result = DllCall("kernel32.dll", "int", "GetComputerNa

我正在尝试从AutoIt调用
GetComputerNameA
,这是我的代码:

Local $mystruct = DllStructCreate(toStr("struct;dword;char[1024];endstruct"))
DllStructSetData($mystruct, 1, 1024)
Local $result = DllCall("kernel32.dll", "int", "GetComputerNameA", "ptr", DllStructGetPtr($mystruct, 2), "ptr", DllStructGetPtr($mystruct, 1))
MsgBox(0, "AutoIt", "Success")  
但在我运行它之后,它不会打印任何内容,就像脚本没有错误地崩溃一样。
知道它为什么不能调用它吗?

它有两个参数:

第一个是
LPSTR
(指向
char
数组的指针),第二个是
LPDWORD
(指向
无符号整数的指针)

你可以这样称呼它:

Func _get_computer_name()
    Local $dll_struct = DllStructCreate("char[17]")
    
    $sz = DllStructCreate('int')
    Local $x = DllCall("kernel32.dll","int","GetComputerNameA","ptr",DllStructGetPtr($dll_struct),"int_ptr",DllStructGetPtr($sz))

    Return DllStructGetData($dll_Struct,1)
EndFunc

GetComputerNameA不将结构作为参数。有关函数参数,请阅读Microsoft的文档。
Func _get_computer_name()
    Local $dll_struct = DllStructCreate("char[17]")
    
    $sz = DllStructCreate('int')
    Local $x = DllCall("kernel32.dll","int","GetComputerNameA","ptr",DllStructGetPtr($dll_struct),"int_ptr",DllStructGetPtr($sz))

    Return DllStructGetData($dll_Struct,1)
EndFunc