cychen3125 发表于 2009-9-22 14:45:54

这些内容应该放到什么位置执行?

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 633, 447, 192, 124)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                       
                Case $Form1
=====这一段怎么不能运行?        我如果把下面这三行,放在WHILE上面,则点击窗口的叉叉就不能关闭窗口,请指教。
                        WinClose("应用程序共享控制台")
                        $c=WinWait("应用程序共享向导","",300)
                        ControlClick("应用程序共享向导","","下一步(&N) >")
                       
        EndSwitch
WEnd

afan 发表于 2009-9-22 14:50:23

你要窗口但没控件(比如按钮),那又有啥用呢

水木子 发表于 2009-9-22 15:03:39

你要窗口但没控件(比如按钮),那又有啥用呢
afan 发表于 2009-9-22 14:50 http://www.autoitx.com/images/common/back.gif

就是!是不是应该做个按钮之类的。

cychen3125 发表于 2009-9-22 16:05:40

同样的道理,我放一个button1,里面就一句EXIT,那么也只是加多一个事件而已(如下),但我那几句话是要一开始就执行的,使用WINWAIT的话一直在等待窗口出现,根本未执行到WHILE那里,而不执行WHILE它就不能判断GUIGETMSG,那就关不了窗口,而只能在托盘里把程序关闭了。因为点叉叉根本没反而,它还在等WINWAIT呢。

While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                        
                Case $Form1

                case $button1
                        exit
                        
      EndSwitch
WEnd

afan 发表于 2009-9-22 16:13:03

你既然想要WinWait那段执行完才用窗口干嘛之前就GUISetState(@SW_SHOW)?

yrloy 发表于 2009-9-22 16:40:39

是啊,你这玩应要窗口干啥?
你既然要打开就运行,那么直接放主程序就行了呗,还放到窗口消息里?什么意思?

cychen3125 发表于 2009-9-22 18:01:06

WINWAIT的过程中,想要执行其它操作呢?如点击某个按钮停止WINWAIT,执行下一步。但现在这样由于未执行WHILE,根本对按钮的操作不作出响应。

可能跟我以前写程序用开的多任务思路有关系吧,请指教。我也知道AU3是脚本,但这种不算是多任务的执行该如何处理呢?

qqgghh1 发表于 2009-9-22 18:25:50

“WINWAIT的过程中,想要执行其它操作呢?如点击某个按钮停止WINWAIT,执行下一步”
winwait的过程也是脚本执行的过程,估计单线程下你想通过操作某一控件来改变脚本执行过程是不易实现的,执行多任务不影响主程序的运行,你可以将这些任务脚本作为外部调用程序来执行啊,停止winwait,用au3热键可以实现吧。

cychen3125 发表于 2009-10-15 15:35:24

搞掂了,是因为WINWAIT的原因,改成了循环,通过WINEXISTS来判断就行了。
页: [1]
查看完整版本: 这些内容应该放到什么位置执行?