找回密码
 加入
搜索
查看: 1215|回复: 6

关于运行DOS命令的困惑!

[复制链接]
发表于 2009-3-25 00:30:16 | 显示全部楼层 |阅读模式
本人写有如下代码:
Func unclock()
        Run("unclock.bat")
        WinWaitActive("RegSvr32")
        Send("{ENTER}")
        WinWaitActive("RegSvr32")
        Send("{ENTER}")
        WinWaitActive("RegSvr32")
        Send("{ENTER}")
        Call("qy")
EndFunc   ;==>unclock

大意是执行一个BAT文件,将网络连接解锁。执行.bat时会出现一个CMD窗口,等待DLL文件注册成功后弹出的确认窗口自动点击确定。运行正常。
当改为:
Func unclock()
_RunDOS("regsvr32 netcfgx.dll")
问题出现在这
        WinWaitActive("RegSvr32")
        Send("{ENTER}")
_RunDOS("regsvr32 netshell.dll")
        WinWaitActive("RegSvr32")
        Send("{ENTER}")
_RunDOS("regsvr32 netman.dll")
        WinWaitActive("RegSvr32")
        Send("{ENTER}")
        Call("qy")
EndFunc   ;==>unclock

这样改后的一个效果是不会出现讨厌的CMD窗口了,但是,在执行完第一个DLL注册(一共3个),弹出第一个注册成功的提示窗口后就死在这了,现象表现为没有检测到注册成功的提示窗口自动点击确定,这时候用手动点击确定后,提示窗口会正常消失,但也没有执行第2个DLL的注册动作了。请教高手是我的语法用错了,还是存在什么别的原因呢?

[ 本帖最后由 ahphsautoit 于 2009-3-30 08:19 编辑 ]
发表于 2009-3-25 04:12:09 | 显示全部楼层
我晕 有那么麻烦吗?直接REGSVR32 netcfgx.dll /s
不就好了吗 搞不懂你要做什么!
发表于 2009-3-25 04:20:17 | 显示全部楼层
人家只是不知道有/s这个参数嘛
 楼主| 发表于 2009-3-25 11:51:53 | 显示全部楼层
呵呵,菜鸟就是这样慢慢长大的嘛!多谢了!
 楼主| 发表于 2009-3-25 12:46:15 | 显示全部楼层
Func unclock()
        _RunDOS("regsvr32/s netcfgx.dll")
        _RunDOS("regsvr32/s netshell.dll")
        _RunDOS("regsvr32/s netman.dll")
        Call("qy")
EndFunc   ;==>unclock
Func clock()
        _RunDOS("regsvr32/s/u netcfgx.dll")
        _RunDOS("regsvr32/s/u netshell.dll")
        _RunDOS("regsvr32/s/u netman.dll")
        Call("jy")
EndFunc   ;==>clock

在_RunDOS("regsvr32/s/u netcfgx.dll")中,如果是/s/u,能静默安装,但是没有成功反注册,如果是/u/s,能成功反注册,但是不能静默安装。不能同时带两个以上的参数运行吗?

[ 本帖最后由 ahphsautoit 于 2009-3-25 13:24 编辑 ]
发表于 2009-3-25 14:40:33 | 显示全部楼层
为什么不可以用空格分隔下参数的?
 楼主| 发表于 2009-3-25 15:28:17 | 显示全部楼层
用空格分?哦,多谢指教!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-19 13:24 , Processed in 0.071886 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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