找回密码
 加入
搜索
查看: 1642|回复: 2

[AU3基础] 【bug讨论】_RunDos启动的进程无法被结束

[复制链接]
发表于 2012-6-9 17:43:04 | 显示全部楼层 |阅读模式
昨天发了疑问贴(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
发表于 2012-6-9 18:44:48 | 显示全部楼层
你还是先认真学习后,才谈你认为的‘bug’吧

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

评分

参与人数 1金钱 +10 收起 理由
user3000 + 10 同意!

查看全部评分

发表于 2012-6-9 19:18:28 | 显示全部楼层
#include <Process.au3> ;
FileWrite(@ScriptDir & '\1.txt', '这里是的批处理内容')
ShellExecute(@ScriptDir & '\1.txt')
_RunDos("taskkill /f /im notepad.exe") 
希望找到需要的......
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-20 13:45 , Processed in 0.076726 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表