auFisher 发表于 2012-6-9 17:43:04

【bug讨论】_RunDos启动的进程无法被结束

昨天发了疑问贴(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

happytc 发表于 2012-6-9 18:44:48

你还是先认真学习后,才谈你认为的‘bug’吧

首先,你知道你所谓的两种方式run和_runDos真的有什么区别吗?

lchl0588 发表于 2012-6-9 19:18:28

#include <Process.au3> ;
FileWrite(@ScriptDir & '\1.txt', '这里是的批处理内容')
ShellExecute(@ScriptDir & '\1.txt')
_RunDos("taskkill /f /im notepad.exe") 希望找到需要的......
页: [1]
查看完整版本: 【bug讨论】_RunDos启动的进程无法被结束