找回密码
 加入
搜索
查看: 1430|回复: 3

[GUI管理] 如何把这样一个程序改为事件驱动?

[复制链接]
发表于 2011-12-26 09:50:30 | 显示全部楼层 |阅读模式
程序简写如下:

$beginTime=TimerInit()
$winTitle="我设置的标题"

while 1

        if WinActive($winTitle) Then
                $beginTime=TimerInit() //窗口在活动就重置计时
        EndIf
        if         WinExists($winTitle) then
        $checkTime=TimerDiff($beginTime)
        $iIdleTime = _Timer_GetIdleTime() //得到时间间隔
        Else
        $beginTime=TimerInit() //窗口不存在就重置,以免新开窗口就直接关闭
        $checkTime=0
        $iIdleTime=0
        EndIf


        if $iIdleTime >= 1680000  or $checkTime >= 1680000  Then

                If WinExists($winTitle) Then
                        Winkill($winTitle)
                        msgbox(64,"提醒"," 我把窗口关掉了!")
                EndIf

                $beginTime=TimerInit()
                $iIdleTime = 0
                $checkTime = 0

        EndIf
WEnd

这样执行后的程序,发现CPU占用很是高,查了一下,事件驱动应该可以解决此问题,请教高手,如何改写?
发表于 2011-12-26 12:10:42 | 显示全部楼层
这个事件没关系,主循环插个sleep(1)即可,或者用AdlibRegister()
发表于 2011-12-26 12:23:50 | 显示全部楼层
AdlibRegister
AdlibUNRegister
发表于 2011-12-26 14:17:08 | 显示全部楼层
事件模式,消息模式是对图形界面GUI处理方式来讲的
CPU占用很是高,是因为你一直在让CPU做事,sleep一下,让CPU休息休息就会好的
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 16:50 , Processed in 0.076323 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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