中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 请教VBS sendkey问题? (已结案) 上一主题 | 下一主题
pdanniel66
初级用户





积分 68
发帖 64
注册 2009-5-23
状态 离线
『楼 主』:  请教VBS sendkey问题? (已结案)

请教VBS sendkey问题 因为应用程序异常,会跳出错误窗口,窗口title是“SAP_ERPRoute.exe - Common Language Runtime 侦错服务",此时只须按下<Enter>键,程序可以继续运作,所以写了以下VBS,设定windows 工作排程,5分钟执行1次,可以暂时解决程序异常问题。但是后来发现,当程序未出现错误时,每5分钟执行的windows 工作排程,会自动按下当时 Active的窗口,若是记事本打开且Active时,会被按下 <Enter>,等同跳行,若是鼠标停在关机,虽然没按 Click , 若5分钟时间一到,会被关机。以下 VBS script不是有指定窗口Title "SAP_ERPRoute.exe - Common Language Runtime 侦错服务",应该只会针对该Title按下 <Enter>,哪里写错了,请教大家,谢谢! Dim WshShell Set WshShell=WScript.CreateObject("WScript.Shell") WshShell.AppActivate "SAP_ERPRoute.exe - Common Language Runtime 侦错服务" WshShell.SendKeys "{ENTER}" [ Last edited by pdanniel66 on 2010-1-9 at 17:24 ]


2010-1-8 04:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pdanniel66
初级用户





积分 68
发帖 64
注册 2009-5-23
状态 离线
『第 2 楼』:  使用if 似乎可以 work,但想要记录Log

使用if 似乎可以 work,但想要记录Log, Wscript.Echo " SAP_ERPRoute.exe - Common Language Runtime 侦错服务active" > 999.txt 语法似乎错误,如下所示,请帮忙! Thanks! Dim WshShell Set WshShell=WScript.CreateObject("WScript.Shell") WshShell.AppActivate "SAP_ERPRoute.exe - Common Language Runtime 侦错服务" if WshShell.appactivate("SAP_ERPRoute.exe - Common Language Runtime 侦错服务") = true Then wscript.sleep 3000 WshShell.SendKeys "{ENTER}" Wscript.Echo " SAP_ERPRoute.exe - Common Language Runtime 侦错服务active" > 999.txt End If


2010-1-8 06:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pdanniel66
初级用户





积分 68
发帖 64
注册 2009-5-23
状态 离线
『第 3 楼』:  I have the solution as below.

vbs_enter.bat dir D:\scripts\TEST\20100106_vbs_enter\writeoutput.txt || echo SAP-MQ Error Log Start Here > D:\scripts\TEST\20100106_vbs_enter\writeoutput.txt cscript /Nologo D:\scripts\TEST\20100106_vbs_enter\vbs_en_20100109_v2.vbs cscript /Nologo D:\scripts\TEST\20100106_vbs_enter\vbs_en_20100109_v3.vbs vbs_en_20100109_v2.vbs as below: Dim WshShell Const ForAppending = 8 Set WshShell=WScript.CreateObject("WScript.Shell") Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("D:\scripts\TEST\20100106_vbs_enter\writeoutput.txt", ForAppending) objFile.WriteLine "Error Log -- Date: " & Now() & vbCrLf WshShell.AppActivate "SAP_ERPRoute.exe - Common Language Runtime 侦错服务" if WshShell.appactivate("SAP_ERPRoute.exe - Common Language Runtime 侦错服务") = true Then objFile.WriteLine "SAP_ERPRoute.exe - Common Language Runtime 侦错服务" & Now() objFile.WriteLine vbCrLf objFile.Close wscript.sleep 3000 WshShell.SendKeys "{ENTER}" 'Wscript.Echo "test123.txt active" > 999.txt End If vbs_en_20100109_v3.vbs as below : Dim WshShell Set WshShell=WScript.CreateObject("WScript.Shell") WshShell.AppActivate "SAP_ERPRoute.exe - Common Language Runtime 侦错服务" if WshShell.appactivate("SAP_ERPRoute.exe - Common Language Runtime 侦错服务") = true Then wscript.sleep 3000 WshShell.SendKeys "{ENTER}" 'Wscript.Echo "test123.txt active" > 999.txt End If [ Last edited by pdanniel66 on 2010-1-9 at 19:38 ]


2010-1-9 17:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pdanniel66
初级用户





积分 68
发帖 64
注册 2009-5-23
状态 离线
『第 4 楼』:  We can hide the batch DOS window.

start_batch.vbs Dim Wsh Set Wsh = WScript.CreateObject("WScript.Shell") WScript.Sleep(5000) Wsh.Run "D:\scripts\TEST\20100106_vbs_enter\vbs_Enter_v1.bat",false,false Set Wsh=NoThing WScript.quit


2010-1-9 20:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: