[已解决]autoit 默认语言是什么 发现个奇怪的问题
本帖最后由 lainline 于 2010-4-16 10:14 编辑返回值是韩国字囧
DllOpen("oleacc.dll")
Local $s=_Acc_GetStateText(1)
MsgBox(0,"",$s)
Func _Acc_GetStateText($dwStateBit,$cchStateBitMax=128);返回状态位对应的解释
Local $lpszStateBit=DllStructCreate("WCHAR["&$cchStateBitMax&"]")
$plpszStateBit = DllStructGetPtr($lpszStateBit)
Local$aResult= DllCall("oleacc.dll","UINT","GetStateText","DWORD",$dwStateBit,"ptr",$plpszStateBit,"UINT",$cchStateBitMax)
If @error Then Return SetError(1,0,0)
Return DllStructGetData($lpszStateBit,1)
EndFunc 嘿嘿。确实哦 又意思 找到原因了
DllOpen("oleacc.dll")
Local $s=_Acc_GetStateText(1)
MsgBox(0,"",$s)
Func _Acc_GetStateText($dwStateBit,$cchStateBitMax=128);返回状态位对应的解释
Local $lpszStateBit=DllStructCreate("WCHAR["&$cchStateBitMax&"]")
$plpszStateBit = DllStructGetPtr($lpszStateBit)
Local$aResult= DllCall("oleacc.dll","UINT","GetStateTextW","DWORD",$dwStateBit,"ptr",$plpszStateBit,"UINT",$cchStateBitMax);改成GetStateTextW
If @error Then Return SetError(1,0,0)
Return DllStructGetData($lpszStateBit,1)
EndFunc 啥原因啊?:face (31): 注意UNICODE与ANSI版本兼容问题,如果某个系统函数中用到了字符串指针,一般这个函数都会有FunctionA和FunctionW两个原型,上例中除了可以把GetStateText改成GetStateTextW外,还可以把wchar改成char,同样可以解决问题。
很多关于中文显示不全或者乱码的问题都是与此有关,而很多人却误认为这是AutoIt的BUG,这果真是一件无聊至极的事情。 厉害呀看看
页:
[1]