找回密码
 加入
搜索
查看: 10767|回复: 4

[确认BUG并已修正] 这个是Bug还是?

[复制链接]
发表于 2012-6-14 16:18:00 | 显示全部楼层 |阅读模式

#include <Array.au3>

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

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

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

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

评分

参与人数 1金钱 +30 贡献 +5 收起 理由
zldfsz + 30 + 5

查看全部评分

发表于 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[0] & @TAB & $a[1] & @LF & $b[0] & @TAB & $b[1] & @LF & $c[0] & @TAB & $c[1] & @CRLF)
我认为都是获取了'当前进程', 也就是执行脚本的信息.
 楼主| 发表于 2012-6-14 17:18:16 | 显示全部楼层
回复 2# user3000


    既是如此,那是否意味着这个函数总是返回成功?
发表于 2012-7-23 17:27:15 | 显示全部楼层
看了下代码,确认为BUG:

参与调试的代码:

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

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




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

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

If $a Then 
        ConsoleWrite($a[0] & @TAB & $a[1] & @CRLF)
EndIf



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

蛋疼解决办法:MOV EAX,DWORD PTR SS:[ESP+14] 修改为 MOV EAX,DWORD PTR SS:[ESP+20]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +30 贡献 +5 收起 理由
zldfsz + 30 + 5

查看全部评分

发表于 2012-8-14 16:59:01 | 显示全部楼层
将修正于新版本的AU3中
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-3-29 15:56 , Processed in 0.076564 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表