昨天发了疑问贴(http://www.autoitx.com/thread-32778-1-1.html)
不知道为何被锁了~
well,今天我再测试,发现一个RunDos的bug,即用RunDos启动的进程几乎无法用相关命令来结束进程,比如:
processClose("node.exe");
或者:
_RunDos("taskkill /f /im node.exe")
测试代码在下面,大家可以分别用_RunDos和Run两种方式来启动notepad程序,然后点击托盘中的“停止”或者“退出”:#include <Constants.au3> ;
#include <Process.au3> ;
Opt("TrayMenuMode",1)
Local $istart=TrayCreateItem ("开启")
Local $istop=TrayCreateItem ("停止")
Local $iexit=TrayCreateItem ("退出")
TraySetState(1)
While 1
Local $msg = TrayGetMsg()
Select
Case $msg = 0
ContinueLoop
Case $msg = $istart
TrayItemSetState($istart,$TRAY_CHECKED)
TrayItemSetState($istop,$TRAY_UNCHECKED)
TrayItemSetState($iexit,$TRAY_UNCHECKED)
;尝试用下面两种方式启动notepad进程
_RunDos("notepad.exe")
;Run('cmd /c notepad.exe', "", @SW_HIDE)
MsgBox(64, "开启","start")
Case $msg = $istop
TrayItemSetState($istop,$TRAY_CHECKED)
TrayItemSetState($istart,$TRAY_UNCHECKED)
TrayItemSetState($iexit,$TRAY_UNCHECKED)
;用processClose关闭
ProcessClose("notepad.exe")
MsgBox(64, "Stop", "stop")
Case $msg = $iexit
;用_RunDos闭
_RunDos("taskkill /f /im notepad.exe")
MsgBox(64, "Stop", "exit")
ExitLoop
EndSelect
WEnd
Exit
|