jjlau 发表于 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 >= 1680000or $checkTime >= 1680000Then

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

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

        EndIf
WEnd

这样执行后的程序,发现CPU占用很是高,查了一下,事件驱动应该可以解决此问题,请教高手,如何改写?

afan 发表于 2011-12-26 12:10:42

这个事件没关系,主循环插个sleep(1)即可,或者用AdlibRegister()

menfan1 发表于 2011-12-26 12:23:50

AdlibRegister
AdlibUNRegister

seniors 发表于 2011-12-26 14:17:08

事件模式,消息模式是对图形界面GUI处理方式来讲的
CPU占用很是高,是因为你一直在让CPU做事,sleep一下,让CPU休息休息就会好的
页: [1]
查看完整版本: 如何把这样一个程序改为事件驱动?