Board logo

标题: [问题求助] vbs如何实现软件登录界面的模拟键盘输入? [打印本页]

作者: lostyi    时间: 2016-3-30 13:47     标题: vbs如何实现软件登录界面的模拟键盘输入?

本帖最后由 pcl_test 于 2016-3-31 19:51 编辑

是这样的,因为工作关系需要开机后自动登陆一个软件,度娘后捣鼓出以下代码:
  1. dim program
  2. program="...\xxx.exe"
  3. set Wshell=CreateObject("Wscript.Shell")
  4. set exec=Wshell.Exec(program)
  5. wscript.Sleep 2000
  6. Wshell.SendKeys "{TAB}"
  7. wscript.Sleep 200
  8. Wshell.SendKeys "xxx"
  9. wscript.Sleep 200
  10. Wshell.SendKeys "{ENTER}"
复制代码
这个在我家里的电脑过了,但是工作电脑据说系统是给修改过的阉割版本,xxx.exe会运行,但不能进入下一步,并报错:第三行,提示编译错误。似乎是Sleep方法的问题。(我在想,如果真的是sleep方法给阉割了,那是不是可以替换或者找到sleep方法的函数通过dll注入呢?)

麻烦大神给说说,为什么有的电脑不能支持这个方法?应该怎么处理?

如果可能,怎样提高这个vbs的兼容性和可靠性:例如如果开机后脚本执行过程中,弹出了其他应用窗口可能需要隐藏并重新激活xxx.exe为当前程序;例如可能因为电脑莫名卡机sleep时间不足或者其他什么原因导致程序未能成功运行,因此可能需要检测脚本的执行结果——这些度娘没有找到了……
作者: happy886rr    时间: 2016-3-30 14:15

回复 1# lostyi
模拟按键不靠谱,用软件登录王
作者: CrLf    时间: 2016-3-30 14:55

ahk **好
作者: czjt1234    时间: 2016-3-30 15:07

本帖最后由 czjt1234 于 2016-3-30 15:11 编辑

完整的错误代码发出来,怀疑不是sleep被阉割

exec方法返回WshScriptExec对象,支持.StdIn.Write方法直接写入
作者: lostyi    时间: 2016-3-30 15:20

本帖最后由 lostyi 于 2016-3-30 15:22 编辑

回复 4# czjt1234
thx
这个差不多就是完整代码了。因为软件启动后焦点在账号输入框,账号是保存好了的,所以只需要TAB一次进入密码框然后enter就可以了。

用.StdIn.Write方法写入什么内容?我没有明白……
作者: codegay    时间: 2016-3-30 18:42

ahk这种也是看一种文档自己也会用了的.
作者: ygqiang    时间: 2016-3-31 06:21

回复 1# lostyi
  1. dim program
  2. program="...\xxx.exe"
  3. set wshell=createobject("wscript.shell")
  4. wshell.run """program""",1
  5. wscript.sleep 3000 '3秒
  6. wshell.appactivate "登录窗口标题"
  7. wscript.Sleep 2000
  8. Wshell.SendKeys "{TAB}"
  9. wscript.Sleep 200
  10. Wshell.SendKeys "xxx"
  11. wscript.Sleep 200
  12. Wshell.SendKeys "{ENTER}"
复制代码

作者: lostyi    时间: 2016-3-31 08:21

回复 7# ygqiang


    非常感谢,我试试先。
作者: 诗歌王位    时间: 2016-9-10 00:32

这个不注册表run下么?怎么实现开机就自动登录的?不是还是要手点的么




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2