zzmxd 发表于 2012-9-1 18:22:52

while和Func如何共存?

本帖最后由 zzmxd 于 2012-9-1 21:50 编辑

就像这样,几个如果调换顺序,总有一些代码失效,该如何让他们都能生效?While 1
        Local $msg = TrayGetMsg()
        Local $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_MINIMIZE
                        GUISetState(@SW_HIDE)
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button2
                        Local $i = 0
            Do
            ProcessSetPriority ( "1.exe", 3 )
                          Sleep (1000)
            $i = $i + 1
                        Until $i = 10
                              

        EndSwitch
        Select
                Case $msg = 0
                        ContinueLoop
                Case $msg = $prefsitem1
                        GUISetState(@SW_SHOWNORMAL)
                        Case $msg = $prefsitem2
                        GUISetState(@SW_HIDE)
                Case $msg = $aboutitem
                        MsgBox(64, "关于:", "http://www.autoitx.com/")
                Case $msg = $exititem
                        ExitLoop
        EndSelect
       
WEnd

TraySetState()
Example()

Func Example()

    TraySetOnEvent($TRAY_EVENT_PRIMARYDOUBLE, "TrayEvent")
    TraySetState(1) ; Show the tray menu.

    While 1
      Sleep(100); 空闲循环
    WEnd
EndFunc   ;==>Example

Func TrayEvent()
    Switch @TRAY_ID ; Check the last tray item identifier.
      Case $TRAY_EVENT_PRIMARYDOUBLE
            ; Display a message box about the AutoIt version and installation path of the AutoIt executable.
            MsgBox(4096, "", "AutoIt tray menu example." & @CRLF & @CRLF & _
                  "Version: " & @AutoItVersion & @CRLF & _
                  "Install Path: " & StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", 0, -1) - 1)) ; Find the folder of a full path.

    EndSwitch
EndFunc   ;==>TrayEvent


Func ExitScript()
    Exit
EndFunc   不是while语句无法运行,就是func语句无法运行。

zzmxd 发表于 2012-9-1 18:31:35

帮助文件里的例子似乎没有类似的,只有分开来的。。。

netegg 发表于 2012-9-1 18:54:00

楼主会说正经的中国话吗?完全没明白说的是什么意思

zzmxd 发表于 2012-9-1 19:00:43

回复 3# netegg
就是说如果用这个代码运行的话,会有一些无法执行,将失效,如同没有这段代码一般,估计有冲突

whitehead 发表于 2012-9-1 19:18:52

那要看哪几个调换顺序,如果你把While 1放到WEND后那自然会出错

netegg 发表于 2012-9-1 19:31:30

本帖最后由 netegg 于 2012-9-1 19:34 编辑

合到一个条件里
select
case $nMsg = or $msg =
case
endselect
试试看

还有把标题改下,你的问题和while/func有什么关系

seniors 发表于 2012-9-1 19:32:36

本帖最后由 seniors 于 2012-9-1 19:33 编辑

不好意思看错
发全代码吧

zzmxd 发表于 2012-9-1 20:00:55

回复 6# netegg
标题没错,因为不是while语句无法运行,就是func语句无法运行。

netegg 发表于 2012-9-1 21:22:18

本帖最后由 netegg 于 2012-9-1 21:28 编辑

回复 8# zzmxd
func是定义,和运行有什么关系,只有逻辑和运行有关
另外你上来的那段代码里什么地方有func

另外搜了搜楼主的帖子,建议楼主先把基本知识再看看吧,这样问的话,说不明白的

zzmxd 发表于 2012-9-1 21:53:42

回复 9# netegg
不好意思,代码少复制了一段,现在补充完整。另外哪里有基本资料?我看过Autoit的自带帮助文件,里面描述Func语句的例子里没有插入While,While语句里也没有Func,所以我不知道他们该怎么排列。

netegg 发表于 2012-9-1 22:08:48

你这个while里调用哪个func了?
除了这个选项
                Case $msg = $exititem
                        ExitLoop
退出循环后才能执行后面的func,没仔细试,不过大概应该是这个逻辑

netegg 发表于 2012-9-1 22:10:27

回复 10# zzmxd
while和func没什么关系,只要while...wend和func...endfunc别穿插就行

zzmxd 发表于 2012-9-1 22:19:13

回复 12# netegg

好的,我试试

魔导 发表于 2012-9-1 23:38:14

小弟实在没看懂   楼主的意思
while 是循环 有循环套循环的也有函数在循环里面的
func 是自定义函数里面可以有循环 也可以有函数
两个怎么会搞到一起呢???

annybaby 发表于 2012-9-2 01:14:53

看不明白楼主的意思,估计是无法同时响应GUI和托盘的动作命令吧~~
混乱中{:face (382):}
页: [1] 2
查看完整版本: while和Func如何共存?