Qokelate 发表于 2012-6-14 16:18:00

这个是Bug还是?


#include <Array.au3>

Local $a=ProcessGetStats(1121111211,0)
_ArrayDisplay($a)

Local $b=ProcessGetStats(0,0)
_ArrayDisplay($b)

;函数ProcessGetStats()
;成功: 返回一个包含信息数据的数组(参考注意部分).
;失败: 返回0.

PID根本不存在,得到的数据是谁的?

user3000 发表于 2012-6-14 17:07:19

回复 1# Qokelate
试试这个:#include <Array.au3>
Local $a=ProcessGetStats(1121111211,1)
Local $b=ProcessGetStats(0,1)
Local $c=ProcessGetStats('', 1)
Sleep(1000)
ConsoleWrite($a & @TAB & $a & @LF & $b & @TAB & $b & @LF & $c & @TAB & $c & @CRLF)我认为都是获取了'当前进程', 也就是执行脚本的信息.

Qokelate 发表于 2012-6-14 17:18:16

回复 2# user3000


    既是如此,那是否意味着这个函数总是返回成功?

thesnow 发表于 2012-7-23 17:27:15

看了下代码,确认为BUG:

参与调试的代码:

#include <Array.au3>
Local $a=ProcessGetStats(1121111211,1)

MsgBox(32,"",$a)
If $a <> 0 Then
        ConsoleWrite($a & @TAB & $a & @CRLF)
EndIf




代码中对参数的数量使用错误.当文本转换为数字后,未使用正确的转换好之后的数值.
我将报告给官方:
http://www.autoitscript.com/trac/autoit/ticket/2235

这里仍然有一个问题,数组在AU3中是无BOOL类型的.即使进程存在,你无法使用下方代码进行判断:

If $a Then
        ConsoleWrite($a & @TAB & $a & @CRLF)
EndIf



临时解决办法:先判断进程是否存在.

蛋疼解决办法:MOV EAX,DWORD PTR SS: 修改为 MOV EAX,DWORD PTR SS:

thesnow 发表于 2012-8-14 16:59:01

将修正于新版本的AU3中
页: [1]
查看完整版本: 这个是Bug还是?