这个需求是否可以用多进程函数来实现。
向各位老大请教:小弟想要实现以下功能:
开启主程序,点击某按钮运行某一进程,因中途可能需要终止该进程,点击另一控件或主程序上的关闭,结束那个正在运行的进程及主程序。
下面是小弟写的,但好像不能实现这个功能,也许是对多进程了解的太肤浅了,需要大哥们指点啊
#include<CoProc.au3>
While 1
$nMsg = GUIGetMsg()
$Msg= TrayGetMsg()
Select
Case $Msg = $displayitem
GUISetState(@SW_RESTORE , $Form1)
Case$Msg = $exititem
_CoProc("Quit")
Case $nMsg = $GUI_EVENT_CLOSE
_CoProc("Quit")
Case $nMsg = $Button1
_CoProc("Update")
EndSelect
WEnd
Func Update()
;程序主体
EndFunc
Func Quit()
If ProcessExists("Update.exe")Then
ProcessClose("Update.exe")
Exit
Else
Exit
EndIf
EndFunc
[ 本帖最后由 qqgghh1 于 2008-11-10 13:40 编辑 ] 自己先顶。
下午看了几遍论坛里关于多进程的介绍,初步了解其用法。但还是有些不明白:
主程序中的变量在子进程中无法使用啊。运行时提示子进程中的变量(已在主程序中定义)未定义
高手赐教啊!
主程序中定义的全局变量子函数中可用,但另开子进程来调用子函数,变量就失效了.
继续顶.请大哥们支招啊. 接着顶.需求达人 没必要多进程模块。换个思路,很简单的事。
au3有个隐藏主窗口,它关闭时相关进程会自己关掉。
[ 本帖最后由 asdf 于 2008-8-28 20:34 编辑 ] 您是说@SW_HIDE吗?
但是单线程时,程序一直在运行,比如它在运行循环指令时,单进程下无法再发送命令终止主程序或您所说隐藏主窗口啊。 = =看来你没懂我的意思,要关闭一个au3进程是件简单活,找到au3隐藏窗口(autoitwin,即是实际上的主窗口),winclose它,然后与之相关的au3进程就会关掉的了。 如果是新手不建议立刻做多进程,先熟悉一下au3自己的思路就清楚了 晕。还请告知。我只是想知道使用多进程时变量作用域的问题。 没有人关注了,还是自己来终结它吧.希望AU3的发展能更完美地支持GUI,支持多线程 没有人关注了,还是自己来终结它吧.希望AU3的发展能更完美地支持GUI,支持多线程 没有人关注了,还是自己来终结它吧.希望AU3的发展能更完美地支持GUI,支持多线程 很不错,已经实现,不过_CoProcSend()函数不起作用。必须到http://www.autoitscript.com/forum/index.php?app=core&module=attach§ion=attach&attach_id=33753
下载新的CoProc.au3,覆盖Include中的文件
Posted 17 April 2011 - 09:38 AM
Here's CoProc.au3 with _CoProcSend and _DuplicateHandle fixed.
Attached Files
CoProc.au3 23.6K 159 downloads
页:
[1]