找回密码
 加入
搜索
查看: 3020|回复: 8

[AU3基础] [已解决]-----自定义UDF时,如何实现实时状态反馈?

  [复制链接]
发表于 2011-1-7 16:30:41 | 显示全部楼层 |阅读模式
本帖最后由 kingfirekkk 于 2011-1-26 08:15 编辑

小弟突发奇想,在自己写UDF时,一直有个难题不知道如何解释,描述如下:
1. UDF Funtion在执行的时候,如何根据反馈值,来判读进度?
2. 反馈值除了1,0,@error错误码以外,还有没有其它的技巧?
PS:个人的思路还集留在批处理阶段,程式执行完了,或者错误了以后,会有返回码...所写的程式仍然在进行错误码的判断...

最终想要解决的问题:
比如在测试网络通断的过程中,如何计算进度百分比?

代码举例如下:
if testlan() then 
msgbox(0,"网络测试!","网络测试OK!")
else
msgbox(0,"网络测试!","网络测试失败!")
endif

func testlan()  ;  1=sucess;   0=Fail
if ping("www.baidu.com",250)>1 then 
return 1
else
return 0
endif
endfunc


PS:这个主师的答案应该是没有比较好的方法解决这个问题了。"实时"是比较困难的!
发表于 2011-1-7 17:17:03 | 显示全部楼层
$times = _ping("www.baidu.com")

MsgBox(0, "网络测试", "错误代码:" & @error & @LF & "扩展代码:" & @extended & @LF & "通话时间:" & $times & @LF)


$times = _ping("www.b1aidu.com")

MsgBox(0, "网络测试", "错误代码:" & @error & @LF & "扩展代码:" & @extended & @LF & "通话时间:" & $times & @LF)


Func _ping($ip) ;  成功 > 0 ;   失败 = 0

        Local $ret = Ping($ip, 250)

        Return SetError(@error, @error, $ret)


EndFunc   ;==>_ping
 楼主| 发表于 2011-1-8 08:44:28 | 显示全部楼层
回复 2# _ddqs.

非常感谢兄弟提供的代码,但感觉有点跑题啦..
 楼主| 发表于 2011-1-8 15:53:07 | 显示全部楼层
有没有人过来围观一下?给点思路也不错哦?
发表于 2011-1-8 16:27:16 | 显示全部楼层
$times = _ping("www.baidu.com")

$times = $times * 4
While $times > 100
        $times = $times / 10
WEnd

ProgressOn("进度", "比例", "0 %")
ProgressSet($times, $times & " %")
Sleep(500)
ProgressSet(100, "完成", "Complete")
Sleep(500)
ProgressOff()

Func _ping($ip) ;  成功 > 0 ;   失败 = 0

        Local $ret = Ping($ip, 250)
        Return SetError(@error, @error, $ret)

EndFunc   ;==>_ping
发表于 2011-1-8 16:52:55 | 显示全部楼层
感觉象网络测试这种事很难用进度去判断吧,就象fiefox取消网页载入进度显示一样,一般种情况下就显示一个循环的动态效果,象现在那个转圈的鼠标一样。
 楼主| 发表于 2011-1-8 17:00:52 | 显示全部楼层
回复 5# _ddqs.

非常感谢兄弟的回复,可能我的问题没有描述清楚:

像Ping这个命令,它是会有返回值的,假如我不是Ping,而是复制文件或者其它的命令一类(仅举例):

filecc(@script&"\"aa.txt","c:\txt")
func filecc($source,$object)
_rundos("copy "&$sorce&" "&$object)
endfunc

怎么样制作UDF,能够实时返回当前的状态,比如说,已经百分之多少了....能反应当前的状态(如完成,失败,百分之多少,已经复制多少....此类的信息).....
发表于 2011-1-8 19:13:10 | 显示全部楼层
一些单线的任务过程哪有返回值
有返回值的是使用类功能的自定义函数进行操作!
如 COPY 你可使用网络下载文件的办法进行读取(如果可行)
即使用每次读取多少字节的数据流
这就有有 1个与基数比较的值
才会有进度存在
!
发表于 2011-1-8 19:24:33 | 显示全部楼层
系统能够判断进度是否完成
但这其中的返回值或方法它不向用户开放
!
只能靠自己去克隆该方法
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 03:07 , Processed in 0.242129 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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