找回密码
 加入
搜索
查看: 1869|回复: 6

请教Autoit脚本的优化方法

[复制链接]
发表于 2009-3-3 10:45:48 | 显示全部楼层 |阅读模式
最近练习写了几个程序,发现程序运行一段时间后,占用系统内存慢慢变大,不知道该怎么去优化程序。

请高手指点一下,如何来优化Autoit代码?

[ 本帖最后由 llssky2003 于 2009-3-3 11:50 编辑 ]
发表于 2009-3-3 11:03:37 | 显示全部楼层
实时释放内存

$begin = TimerInit()
Func _EmptyMyScriptMem($PID)
        Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $PID)
        Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
        DllCall("kernel32.dll" , 'int', 'CloseHandle', 'int', $ai_Handle[0])
EndFunc
$List=ProcessList()
For $x=1 to $List[0][0]
        _EmptyMyScriptMem($List[$x][1])
Next
$dif = TimerDiff($begin)
MsgBox(0,"时间差",$dif)
 楼主| 发表于 2009-3-3 11:19:03 | 显示全部楼层
原帖由 xrbenbeba 于 2009-3-3 11:03 发表
实时释放内存

$begin = TimerInit()
Func _EmptyMyScriptMem($PID)
        Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $PID)
        Local  ...

谢谢xrbenbeba,我看看效果怎么样。
发表于 2009-3-3 11:22:29 | 显示全部楼层
原帖由 llssky2003 于 2009-3-3 11:19 发表

谢谢xrbenbeba,我看看效果怎么样。


补充一下 当前脚本的PID是 @AutoItPID

客气 原创又不是我

我这是拿别人东西换人情

[ 本帖最后由 xrbenbeba 于 2009-3-3 11:24 编辑 ]
 楼主| 发表于 2009-3-3 11:38:11 | 显示全部楼层
呵呵,我刚用的是
$List=ProcessList(@ScriptName)
_EmptyMyScriptMem($List[1][1])

用@AutoItPID,又可以省一句话了。
发表于 2009-3-3 15:20:28 | 显示全部楼层
以前记得写过几个AUTOIT脚本,若使用ANSI编译方式的话,就会占用越来越多的内存,在这种情况下使用_EmptyMyScriptMem也是无效的,你会发现该程序占用的虚拟内存也越来越多。但是,若用UNICODE方式编译的话就没事了。
发表于 2011-5-15 22:57:47 | 显示全部楼层
回复 6# firewzy

编译上有何区别 都是直接编译的。。貌似没有这个选项。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-2 03:32 , Processed in 0.079904 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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