gc801 发表于 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 编辑 ]

gc801 发表于 2008-11-6 14:42:21

请大虾们不吝赐教!谢谢了先。

amgloon 发表于 2008-11-6 14:51:20

设定个Case $msg=0的情况下.
进行的操作....?

gc801 发表于 2008-11-6 14:56:03

原帖由 amgloon 于 2008-11-6 14:51 发表 http://www.autoitx.com/images/common/back.gif
设定个Case $msg=0的情况下.
进行的操作....?
嗯嗯,或者你能让它自己间隔一定时间执行就行?

amgloon 发表于 2008-11-6 15:03:18

我只会简单的。
Case $msg=0
    Sleep(180000)
    Call("Clean")

gc801 发表于 2008-11-6 15:07:56

延时不行,我的托盘还在执行其他任务呢。有高手赐教吗?

78391493 发表于 2008-11-6 16:53:16

多线程没办法

AUFS 发表于 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       

试试这个。。。

gc801 发表于 2008-11-7 00:11:28

楼上,Time被你乘了两次1万,I恒等于1,那内存整理的过程能运行吗/。

liongodmien 发表于 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

gc801 发表于 2008-11-7 10:20:12

谢谢楼上,问题解决了。原来去掉了Case $msg=0的判断。

[ 本帖最后由 gc801 于 2008-11-7 10:30 编辑 ]

liongodmien 发表于 2008-11-7 10:36:45

原帖由 gc801 于 2008-11-7 10:20 发表 http://www.autoitx.com/images/common/back.gif
谢谢楼上,问题解决了。原来去掉了Case $msg=0的判断。
:face (13): :face (32): :face (28): :face (18): :face (2): :face (9):

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

gc801 发表于 2008-11-7 10:38:36

原帖由 liongodmien 于 2008-11-7 10:36 发表 http://www.autoitx.com/images/common/back.gif

:face (13): :face (32): :face (28): :face (18): :face (2): :face (9):

不是去掉了Case $msg=0的判断,而是去掉了那个多余的判断,把时间比较加进去才是你想要的...
新手,不好意思,我以为如果没有loop的话Case不会循环。

mindy_xie 发表于 2013-3-20 09:30:24

学习了,好东西
页: [1]
查看完整版本: 如何让托盘自动间隔一定时间执行一个操作?