中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何调用 Windows 图形界面应用程序及模拟按键(已解决)
<<   [1] [2]  >>   >
作者:
标题: 如何调用 Windows 图形界面应用程序及模拟按键(已解决) 上一主题 | 下一主题
kafen
初级用户





积分 97
发帖 43
注册 2005-7-25
状态 离线
『楼 主』:  如何调用 Windows 图形界面应用程序及模拟按键(已解决)

有个 Windows 图形界面应用程序打开后可以填入一个任意数字,然后点击确定即可,我想写个批处理来调用打开它并能填入指定的数字再自动完成确定,请问如何写这个批处理?多谢啦! [ Last edited by kafen on 2006-12-19 at 09:54 PM ]


2006-12-17 00:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 2 楼』:  

如果是命令行工具,兄可以参考如下两个贴子中的示例代码~:) 如何用管道的命令把多个结果输入到后一个程序里 www.cn-dos.net/forum ... 如何用debug 编出一个回车的命令? www.cn-dos.net/forum ... 如果是调用 Windows 图形界面应用程序并发送数字以及模拟按键,则参考: 在CMD下如何用批处理模拟按键 (下面链接的第7楼示例代码) www.cn-dos.net/forum ... 谁能帮忙编个VBS做一件不可能的事 (见贴子第5楼通过剪辑板实现发送信息) www.cn-dos.net/forum ... [ Last edited by redtek on 2006-12-16 at 11:37 AM ]




    Redtek,一个永远在网上流浪的人…… _.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-12-17 00:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 3 楼』:  

set ws=wscript.createobject("wscript.shell") ws.run "calc.exe" '这是你要运行的程序,写上完整路径。 wscript.sleep 2000 ws.sendkeys "12321" '这里是你要填入的数字。 ws.sendkeys "~"


   此帖被 +5 点积分      点击查看详情   
评分人:【 redtek 分数: +5  时间:2006-12-17 02:26


2006-12-17 00:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kafen
初级用户





积分 97
发帖 43
注册 2005-7-25
状态 离线
『第 4 楼』:  

Originally posted by redtek at 2006-12-17 00:31: 如果是命令行工具,兄可以参考如下两个贴子中的示例代码~:) 如何用管道的命令把多个结果输入到后一个程序里 [url]http://www.cn-dos.net/ ...
@echo off echo set WshShell = CreateObject("WScript.Shell") >>sendkey.vbs echo WshShell.AppActivate %1 >>sendkey.vbs echo WshShell.SendKeys "%2" >>sendkey.vbs :other if "%3" == "" start sendkey.vbs & exit echo WshShell.SendKeys "%3" >>sendkey.vbs shift goto other 参数一:要发送按键的程序的标题,注意用引号括起来。 参数2-9:要发送的按键。可以发送一些功能键,如ALT,ESC,CTRL等等。。。 因是新手,故对于下面的解释有点看不懂,能否具体以实例解说一下,多谢了!


2006-12-17 01:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 5 楼』:  

3楼jmz573515兄给出的示例代码非常详细易懂~:) 下面就把jmz573515兄给出的代码解释一下:
set ws=wscript.createobject("wscript.shell")
ws.run "calc.exe" '这是你要运行的程序,写上完整路径。

'    上面这句是运行一个要接收你发送键值的应用程序。上面是启动windows计算器。


wscript.sleep 2000

'    上面是延时(就是等待)2秒钟。那个2000是指毫秒-1秒等于1000毫秒。


ws.sendkeys "12321" '这里是你要填入的数字。

'    上面 ws.SendKey 是发送模拟按键的指令,发送12321这串数字到计算器中。
'    同样也可以发送模拟的按键,如回车等…… 

ws.sendkeys "~" 
兄可以将3楼代码存成一个名为 计算器.VBS 的文件,然后鼠标双击执行。 另:兄5楼所提及代码先不要试验,那是用批处理将VBS代码写成VBS脚本。   所以里面又包含了批处理文件操作技巧,反而又增加了学习难度。 建议只试验3楼代码,先从Windows计算器开始,然后再试着记事本,再试着其它更复杂应用程序的控制。 下面是VBS所能发送的健值代码举例: (下面键值列表的部分内容取自互联网某网站,原作者不详)
对于SendKeys这个命令可以send什么,我们可以看下面的列表: BACKSPACE {BACKSPACE}, {BS}, or {BKSP} BREAK {BREAK} CAPS LOCK {CAPSLOCK} DEL or DELETE {DELETE} or {DEL} DOWN ARROW {DOWN} END {END} ENTER {ENTER}or ~ ESC {ESC} HELP {HELP} HOME {HOME} INS or INSERT {INSERT} or {INS} LEFT ARROW {LEFT} NUM LOCK {NUMLOCK} PAGE DOWN {PGDN} PAGE UP {PGUP} PRINT SCREEN {PRTSC} RIGHT ARROW {RIGHT} SCROLL LOCK {SCROLLLOCK} TAB {TAB} UP ARROW {UP} F1 {F1} F2 {F2} F3 {F3} F4 {F4} F5 {F5} F6 {F6} F7 {F7} F8 {F8} F9 {F9} F10 {F10} F11 {F11} F12 {F12} F13 {F13} F14 {F14} F15 {F15} F16 {F16} SHIFT + CTRL ^ ALT %




    Redtek,一个永远在网上流浪的人…… _.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-12-17 01:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kafen
初级用户





积分 97
发帖 43
注册 2005-7-25
状态 离线
『第 6 楼』:  

多谢楼上两位,试用计算器和记事本成功,接下来再多试试别的,多谢了,我得好好学学啦!


2006-12-17 01:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
kafen
初级用户





积分 97
发帖 43
注册 2005-7-25
状态 离线
『第 7 楼』:  

可能是涉及到这个应用程序要指定输入框定位问题,还是无法实现,请帮我看看吧。 [ Last edited by kafen on 2006-12-17 at 02:43 AM ]


2006-12-17 02:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wydos
中级用户





积分 304
发帖 117
注册 2006-4-4
状态 离线
『第 8 楼』:  

可以用tab键定位指定输入框,按下tab键,看按几下定位到你要的输入框 下面代码是 按tab键按6次 wshshell.sendkeys("{TAB 6}")


   此帖被 +3 点积分     点击查看详情   
评分人:【 redtek 分数: +3  时间:2006-12-17 02:26


2006-12-17 02:23
查看资料  发送邮件  发短消息 网志  OICQ (327337973)  编辑帖子  回复  引用回复
kafen
初级用户





积分 97
发帖 43
注册 2005-7-25
状态 离线
『第 9 楼』:  

Originally posted by wydos at 2006-12-17 02:23: 可以用tab键定位指定输入框,按下tab键,看按几下定位到你要的输入框 下面代码是 按tab键按6次 wshshell.sendkeys("{TAB 6}")
真的好感谢大家,这里高手真多呀! 因为我上面是用ws.sendkeys,所以这里只能用ws.sendkeys("{TAB 6}"),否则会出现错误提示:找不到wshshell对象。谢谢你的指导! 因为大家的耐心指导,我已解决了问题,感谢jmz573515兄和wydos兄,特别是redtek兄的悉心指导! set ws=wscript.createobject("wscript.shell") ws.run "tcpPatch.exe" '这是你要运行的程序,写上完整路径。 wscript.sleep 2000 '这里设置延时时间为2秒钟。 ws.sendkeys("{TAB 1}") '按一下TAB键定位鼠标位置,以此类推! ws.sendkeys "300" '这里是你要填入的数字。 ws.sendkeys("{TAB 2}") '再按两下TAB键定位应用按钮。 ws.sendkeys "~" '按回车确定应用。 ws.sendkeys("{ESC}") '按ESC退出该程序。 [ Last edited by kafen on 2006-12-17 at 02:51 AM ]


2006-12-17 02:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 10 楼』:  

set ws=wscript.createobject("wscript.shell") 上面的 set ws= 大概含义是:将创建的 "wscript.shell” 对象的 引用 赋给变量 ws 所以,你下面就可以引用这个对象来操作一些东东了:) ws.run "calc.exe" 如果你将变量设置为 set redtek= ………… 那么下面就当然是使用 redtek.run …… 什么了:) (注: 上面我解释的不完全正确,没学过VBS,大概是这个意思,更详细兄再多查些更准确的解释与资料)




    Redtek,一个永远在网上流浪的人…… _.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-12-17 02:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kafen
初级用户





积分 97
发帖 43
注册 2005-7-25
状态 离线
『第 11 楼』:  

我晕,为什么以上的方法在做Flash Player 9.0 for IE批处理安装时无法实现? Flash Player 9.0 for IE下载地址为:nj.onlinedown.net ... 大家帮我看看好吗?谢谢了! 这是这样写的: set ws=wscript.createobject("wscript.shell") ws.run "flashIE.exe" wscript.sleep 1000 ws.sendkeys "~" 存为.vbs文件后运行,安装完无法关闭界面! [ Last edited by kafen on 2006-12-19 at 09:54 AM ]


2006-12-19 09:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 12 楼』:  

1. 下载我提取的文件 2. 把它复制到 system32\ 文件夹 3. 运行 regsvr32 Flash9b.ocx 代码
copy /y Flash9b.ocx "%windir%\system32\"
regsvr32 Flash9b.ocx


2006-12-19 11:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kafen
初级用户





积分 97
发帖 43
注册 2005-7-25
状态 离线
『第 13 楼』:  

Originally posted by electronixtar at 2006-12-19 11:07: 1. 下载我提取的文件 2. 把它复制到 system32\ 文件夹 3. 运行 regsvr32 Flash9b.ocx ...
谢谢回复,但是我试了,提示错误。我看到别人有个VBS转成的EXE,只是不知他加了什么代码可以安装完退出。我写的那个代码应当跟他差不多,就只是哪里差了一点。 哦,忘记了说一下,我不是在DOS下运行这些的。 [ Last edited by kafen on 2006-12-19 at 11:24 AM ]


2006-12-19 11:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 14 楼』:  

不知道kafen兄试验时所提示的是什么错误?(这个有可能对解决这问题很关键) 如果安装程序都装完了但它自己不会退出(或是无法正常被.sendkey发送的退出等按键所控置), 如果是这样,干脆把那个安装程序用 TaskList 查出来,再用 TaskKill 杀掉~:)




    Redtek,一个永远在网上流浪的人…… _.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-12-19 11:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lisiyuan
初级用户





积分 21
发帖 28
注册 2006-12-15
状态 离线
『第 15 楼』:  

yun晕 看不懂 以后要努力学习了


2006-12-19 11:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
<<   [1] [2]  >>   >
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: