如何VBS脚本实现对指定对话框窗口侦测和选项操作
需要在现有VBS脚本中插入以下VBS功能语句,实现每隔1秒钟检测某个指定对话框窗口是否存在,假设对话框标题为"Test",对话框有三个选项"accept""cancel"...
需要在现有VBS脚本中插入以下VBS功能语句,实现每隔1秒钟检测某个指定对话框窗口是否存在,假设对话框标题为"Test",对话框有三个选项"accept""cancel"和"close",如果检测到对话框存在则根据需要自动点击"accept"或"cancel",然后执行下一条语句,如果对话框不存在则继续保持检测,直到15秒后退出检测并执行下一条语句。注:对话框默认选择"accept"直接回车即可实现,但如果要选择cancel该怎么办?求VBS高手详细解答。
展开
2个回答
展开全部
你如果用QTP(编程语言也是VBS)的话,直接有个WinExist()方法判断窗口是否存在。但VBS中没有这个方法,只能通过AppActivate方法返回的布尔值来判断应用激活是否成功。如果对话框存在,则一定会返回True,表示激活成功。基于这个思路:
On Error Resume Next
count = 0
set WshShell = WScript.CreateObject("WScript.Shell")
Do While count < 15
ret = WshShell.AppActivate("Test")
If ret Then
WshShell.SendKeys “{TAB}” ‘通过TAB键切换到"cancel"按钮
WshShell.SendKeys "{ENTER}" '点击"cancel"
Exit Do
Else
WScript.Sleep 1000
count = count + 1
End If
Loop
On Error Resume Next
count = 0
set WshShell = WScript.CreateObject("WScript.Shell")
Do While count < 15
ret = WshShell.AppActivate("Test")
If ret Then
WshShell.SendKeys “{TAB}” ‘通过TAB键切换到"cancel"按钮
WshShell.SendKeys "{ENTER}" '点击"cancel"
Exit Do
Else
WScript.Sleep 1000
count = count + 1
End If
Loop
展开全部
虽然vbs本身没有提供查询窗口的函数,但是可以通过activex实现,就是创建一个wordapplication
只要电脑装了word就行。
Set objWord = CreateObject("Word.Application")
objword.Visible=false
Set colTasks = objWord.Tasks
For Each objTask in colTasks
If objTask.Visible and objtask.name="test" then
ret = WshShell.AppActivate("Test")
If ret Then
WshShell.SendKeys “{TAB}” ‘通过TAB键切换到"cancel"按钮
WshShell.SendKeys "{ENTER}" '点击"cancel"
end if
End If
Next
只要电脑装了word就行。
Set objWord = CreateObject("Word.Application")
objword.Visible=false
Set colTasks = objWord.Tasks
For Each objTask in colTasks
If objTask.Visible and objtask.name="test" then
ret = WshShell.AppActivate("Test")
If ret Then
WshShell.SendKeys “{TAB}” ‘通过TAB键切换到"cancel"按钮
WshShell.SendKeys "{ENTER}" '点击"cancel"
end if
End If
Next
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询