找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 77319|回复: 24

[问题求助] [已解决]vbs如何点击弹出框上的指定按钮?

[复制链接]
发表于 2016-4-23 19:29:24 | 显示全部楼层 |阅读模式
[已解决]vbs如何实现:点击弹出框/提示框上的指定按钮?

vbs循环监控特定标题的窗口,如果弹出来窗口,就点击窗口上的指定按钮

——————————————————————————————————
更新下:

经过反复测试:
1、某个exe软件运行的时候,有时候会弹出某个特定标题的窗口。
默认是取消框。如果先按1次键盘的左箭头/TAB按键,再按1次键盘的回车/空格键,
都可以达到预期效果(都可以选中确定按钮,然后让窗口关闭)。
2、vbs代码,无论如何修改,都不能实现选中确定按钮、并点击确定让窗口关闭。
每次都只能点击到“取消”按钮。


多谢Nsqs的帮忙。


sendkeys的方法是模拟键盘,如果窗口内的按钮不支持快捷键,sendkeys就不能用了

扩展第三方程序,可以调用里面的方法向系统直接发送消息,
按下窗口里面的按钮。用sendmessage是向系统发送系统指令
系统接收什么就执行什么 非模拟键盘操作。。
  1. Const strWindowTitle = "窗口标题"   ' 监控的窗口标题

  2. Do
  3.   Main
  4.   WScript.Sleep 2000
  5. Loop

  6. Sub Main()

  7.   Dim wso, fso
  8.   Set wso = CreateObject("Wscript.Shell")
  9.   Set fso=CreateObject("Scripting.FileSystemObject")
  10.   
  11.   '一直检查窗口,直到指定窗口出现
  12.   Do While wso.AppActivate(strWindowTitle) = False
  13.     WScript.sleep 1000    ' 延时 1 秒
  14.    
  15.   Loop
  16.   
  17.   '激活窗口
  18.   Call WindowActive(strWindowTitle)
  19.   WScript.sleep 1000    ' 延时 1 秒  

  20.   '(发送 left左箭头)
  21.   wso.SendKeys "{left}"

  22.   WScript.sleep 1000    ' 延时 1 秒
  23.   '(发送 回车)
  24.   wso.sendkeys "{enter}"  

  25.   Set wso = NoThing
  26.   
  27. End Sub



  28. '激活窗口
  29. Sub WindowActive(ByVal strWindowTitle)
  30.   Dim objWord, objTasks
  31.   Set objWord = CreateObject("word.Application")
  32.   Set objTasks = objWord.Tasks
  33.   If objTasks.Exists(strWindowTitle) Then
  34.     objTasks(strWindowTitle).Activate         '激活窗口
  35.     objTasks(strWindowTitle).WindowState = 0  '0平常模式、1最大化模式、2最小化模式
  36.   End If
  37.   objWord.Quit
  38. End Sub
复制代码

评分

参与人数 1PB -4 收起 理由
pcl_test -4 勿发笼统的标题

查看全部评分

发表于 2016-4-23 20:07:38 | 显示全部楼层
用 ahk 吧
发表于 2016-4-23 21:11:11 | 显示全部楼层
回复 2# CrLf


      cn-dos上我存着他当年问我问题的私信。
发表于 2016-4-23 21:13:37 | 显示全部楼层
试试发送TAB切换焦点。
 楼主| 发表于 2016-4-23 21:44:23 | 显示全部楼层
回复 4# codegay


    用键盘,就只能是1次左箭头+1次回车,才能满足要求。。
tab键好像没效果。
发表于 2016-4-24 02:44:33 | 显示全部楼层
  1. sub click(win,subwin,s,c)
  2.         dim BM_CLICK,h,api,hwnd,save_win,bh
  3.         set api=CreateObject("VBScript.API")
  4.         with api
  5.                 h=.FindWindow (vbNullString,win):BM_CLICK=&HF5
  6.                 save_win=.GetForegroundWindow
  7.                 for each Hwnd in .EnumSubHwnd(h,"*button*",subwin):bh=hwnd:next
  8.                 do
  9.                         if .isWindow(bh)=0 then _
  10.                                 exit do
  11.                         if .GetForegroundWindow<>bh then _
  12.                                 .SetForegroundWindow h
  13.                         count=count+1
  14.                         .sendmessage bh,BM_CLICK ,0,0
  15.                         wsh.sleep int(s&"E+3")
  16.                 loop while count<c
  17.                 .SetForegroundWindow save_win
  18.         end with
  19.         set api=nothing
  20. end sub

  21. call click("window","确定",1,1000)        '调用过程click 1秒执行一次,持续1000次
复制代码
发表于 2016-4-24 10:10:54 | 显示全部楼层
本帖最后由 Nsqs 于 2016-4-24 13:50 编辑

回复 7# ygqiang


    更新了一下,优化了方法,直接调用click就可以循环了
 楼主| 发表于 2016-4-24 20:40:00 | 显示全部楼层
回复 8# Nsqs


    1、VBScript.exe,双击注册。是否适合xp系统下使用?
2、代码直接保存为vbs运行吗?
3、能否修改下代码,实现一直循环2-3秒监控?
发表于 2016-4-24 21:54:42 | 显示全部楼层
回复 8# ygqiang


    1是的
2是的
3自己改…我都写了注释
 楼主| 发表于 2016-4-25 10:18:52 | 显示全部楼层
回复 9# Nsqs


——————————————————————————————————
更新下:

经过反复测试:
1、特定标题的窗口弹出来,默认是取消框。如果先按1次键盘的左箭头/TAB按键,再按1次键盘的回车/空格键,
都可以达到预期效果(都可以选中确定按钮,然后让窗口关闭)。
2、vbs代码,无论如何修改,都不能实现选中确定按钮、并点击确定让窗口关闭。
每次都只能点击到“取消”按钮。
 楼主| 发表于 2016-4-25 10:19:39 | 显示全部楼层
回复 9# Nsqs


    xp系统下,你的6楼最新的代码,出现错误提示。
发表于 2016-4-25 13:04:28 | 显示全部楼层
你没有下载最新的exe?
 楼主| 发表于 2016-4-25 13:16:42 | 显示全部楼层
回复 12# Nsqs


    哦。没下载。回头下载最新exe再测试下。谢谢
发表于 2016-4-25 13:25:23 | 显示全部楼层
回复  Nsqs


    哦。没下载。回头下载最新exe再测试下。谢谢
ygqiang 发表于 2016-4-25 13:16



    如果是已经有旧exe并且你注册过了你就不需要再注册一次直接替换旧exe就可以了.如果没注册过就把新exe替换以后再双击打开注册就能用最新代码了
 楼主| 发表于 2016-4-25 14:56:34 | 显示全部楼层
回复 14# Nsqs


替换旧exe?

exe文件存放在系统哪个目录下?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 22:02 , Processed in 0.019955 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表