ahphsautoit 发表于 2009-3-25 00:30:16

关于运行DOS命令的困惑!

本人写有如下代码:
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 编辑 ]

YoDe 发表于 2009-3-25 04:12:09

我晕 有那么麻烦吗?直接REGSVR32 netcfgx.dll /s
不就好了吗 搞不懂你要做什么!

sxd 发表于 2009-3-25 04:20:17

人家只是不知道有/s这个参数嘛

ahphsautoit 发表于 2009-3-25 11:51:53

呵呵,菜鸟就是这样慢慢长大的嘛!多谢了!

ahphsautoit 发表于 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 编辑 ]

liongodmien 发表于 2009-3-25 14:40:33

为什么不可以用空格分隔下参数的?

ahphsautoit 发表于 2009-3-25 15:28:17

用空格分?哦,多谢指教!
页: [1]
查看完整版本: 关于运行DOS命令的困惑!