标题: [问题求助] vbs如何实现软件登录界面的模拟键盘输入? [打印本页]
作者: lostyi 时间: 2016-3-30 13:47 标题: vbs如何实现软件登录界面的模拟键盘输入?
本帖最后由 pcl_test 于 2016-3-31 19:51 编辑
是这样的,因为工作关系需要开机后自动登陆一个软件,度娘后捣鼓出以下代码:- dim program
- program="...\xxx.exe"
- set Wshell=CreateObject("Wscript.Shell")
- set exec=Wshell.Exec(program)
- wscript.Sleep 2000
- Wshell.SendKeys "{TAB}"
- wscript.Sleep 200
- Wshell.SendKeys "xxx"
- wscript.Sleep 200
- 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 - dim program
- program="...\xxx.exe"
-
- set wshell=createobject("wscript.shell")
- wshell.run """program""",1
- wscript.sleep 3000 '3秒
- wshell.appactivate "登录窗口标题"
-
- wscript.Sleep 2000
- Wshell.SendKeys "{TAB}"
- wscript.Sleep 200
- Wshell.SendKeys "xxx"
- wscript.Sleep 200
- Wshell.SendKeys "{ENTER}"
复制代码
作者: lostyi 时间: 2016-3-31 08:21
回复 7# ygqiang
非常感谢,我试试先。
作者: 诗歌王位 时间: 2016-9-10 00:32
这个不注册表run下么?怎么实现开机就自动登录的?不是还是要手点的么
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |