找回密码
 加入
搜索
查看: 2660|回复: 13

如何让托盘自动间隔一定时间执行一个操作?

[复制链接]
发表于 2008-11-6 14:39:19 | 显示全部楼层 |阅读模式
例如,我有一个GUIForm上有一个Edit,输入一个数字(比如3),程序运行后,如果让托盘事件自动间隔3分钟整理一下内存?我把我原来的代码贴出来:
Func Trayin() ;托盘图标过程
        
Local $prefsitem,$aboutitem,$exititem,$msg,$openCY,$RamClean,$openExcel

$openCY  = TrayCreateItem("自动登录")
$openExcel =TrayCreateItem("打开Microsoft Excel")
TrayCreateItem("")
$RamClean = TrayCreateItem("整理内存")
$prefsitem  = TrayCreateItem("参数设置")
TrayCreateItem("")
$aboutitem  = TrayCreateItem("关于(&A)")
TrayCreateItem("")
$exititem   = TrayCreateItem("退出(&E)辅助工具")

TraySetState()
TraySetToolTip( "辅助工具")


While 1
    $msg = TrayGetMsg()
    Select
                Case $msg = 0
                        ContinueLoop  //假如我想在这里间隔3分钟执行一个整理内存的操作?如何做?
                Case $msg = $openCY
                        Call("Autologin")
                Case $msg= $openExcel
                        Call("OpenExcel")
                Case $msg=$RamClean
                        Call("Clean")
        Case $msg = $prefsitem
            Call("config")
        Case $msg = $aboutitem
            Msgbox(64, "关于:辅助工具", "本工具运行于" & "OS:" & @OSVersion)
        Case $msg = $exititem
           Exit
    EndSelect
WEnd
EndFunc
[ 本帖最后由 gc801 于 2008-11-7 10:33 编辑 ]
 楼主| 发表于 2008-11-6 14:42:21 | 显示全部楼层
请大虾们不吝赐教!谢谢了先。
发表于 2008-11-6 14:51:20 | 显示全部楼层
设定个Case $msg=0的情况下.
进行的操作....?
 楼主| 发表于 2008-11-6 14:56:03 | 显示全部楼层
原帖由 amgloon 于 2008-11-6 14:51 发表
设定个Case $msg=0的情况下.
进行的操作....?

嗯嗯,或者你能让它自己间隔一定时间执行就行?
发表于 2008-11-6 15:03:18 | 显示全部楼层
我只会简单的。
Case $msg=0
    Sleep(180000)
    Call("Clean")
 楼主| 发表于 2008-11-6 15:07:56 | 显示全部楼层
延时不行,我的托盘还在执行其他任务呢。有高手赐教吗?
发表于 2008-11-6 16:53:16 | 显示全部楼层
多线程没办法
发表于 2008-11-6 19:46:13 | 显示全部楼层
Dim $i = 1
$Time = '3'
$Time = $Time * 10000
$TC = $Time / 50

AdlibEnable('_AutoMey','50')

Func _AutoMey()
If $TC = $i Then
;;内存整理
$i = 1
$Time = $Time * 10000
$TC = $Time / 50
EndIf       

试试这个。。。
 楼主| 发表于 2008-11-7 00:11:28 | 显示全部楼层
楼上,Time被你乘了两次1万,I恒等于1,那内存整理的过程能运行吗/。
发表于 2008-11-7 09:23:12 | 显示全部楼层

Func Trayin() ;托盘图标过程
        
Local $prefsitem,$aboutitem,$exititem,$msg,$openCY,$RamClean,$openExcel

$openCY  = TrayCreateItem("自动登录")
$openExcel =TrayCreateItem("打开Microsoft Excel")
TrayCreateItem("")
$RamClean = TrayCreateItem("整理内存")
$prefsitem  = TrayCreateItem("参数设置")
TrayCreateItem("")
$aboutitem  = TrayCreateItem("关于(&A)")
TrayCreateItem("")
$exititem   = TrayCreateItem("退出(&E)辅助工具")

TraySetState()
TraySetToolTip( "辅助工具")

$T = TimerInit()
While 1
    $msg = TrayGetMsg()
    Select
                Case $msg = $openCY
                        Call("Autologin")
                Case $msg= $openExcel
                        Call("OpenExcel")
                Case $msg=$RamClean
                        Call("Clean")
        Case $msg = $prefsitem
            Call("config")
        Case $msg = $aboutitem
            Msgbox(64, "关于:辅助工具", "本工具运行于" & "OS:" & @OSVersion)
        Case $msg = $exititem
           Exit
   EndSelect
   If TimerDiff($T) >= 180000 Then
           Clean()
           $T = TimerInit()
        EndIf
WEnd
EndFunc
 楼主| 发表于 2008-11-7 10:20:12 | 显示全部楼层
谢谢楼上,问题解决了。原来去掉了Case $msg=0的判断。

[ 本帖最后由 gc801 于 2008-11-7 10:30 编辑 ]
发表于 2008-11-7 10:36:45 | 显示全部楼层
原帖由 gc801 于 2008-11-7 10:20 发表
谢谢楼上,问题解决了。原来去掉了Case $msg=0的判断。



不是去掉了Case $msg=0的判断,而是去掉了那个多余的判断,把时间比较加进去才是你想要的...
 楼主| 发表于 2008-11-7 10:38:36 | 显示全部楼层
原帖由 liongodmien 于 2008-11-7 10:36 发表



不是去掉了Case $msg=0的判断,而是去掉了那个多余的判断,把时间比较加进去才是你想要的...

新手,不好意思,我以为如果没有loop的话Case不会循环。
发表于 2013-3-20 09:30:24 | 显示全部楼层
学习了,好东西
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-29 09:25 , Processed in 0.084373 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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