VS2010里的VB如何编写在弹出对话框里自动点确定?

xiao8xiao 2017-09-11 10:29:00
很久没有碰VB了(以前喜欢用),现在突然自己需要一个小程序,而且是实时监控,让它帮我完成一个小功能:

如何自动帮我点击弹出对话框里的确定按钮?这些要求后台完全,不影响正常的鼠标、键盘的操作(如上网、娱乐等等)
...全文
5299 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
舉杯邀明月 2017-09-11
  • 打赏
  • 举报
回复
另外,如果消息框是只有“确定”的那种,不用找“确定”按钮的句柄,直接向消息框发送 WM_CLOSE 就行了。
舉杯邀明月 2017-09-11
  • 打赏
  • 举报
回复
这跟“平台”无关吧! 各种编程环境中,思路都差不多。 如果是在“用户操作”中弹出的消息框,这个消息应该都是处于“前台”的活动窗口,   可以用 GetForegroundWindow( ) 获取到消息框句柄,   然后以此句柄值查找到“确定”按钮的句柄,向它发送 WM_LBUTTONDBLCLK 就可以了。 如果是“后台程序”运行之中,在某种情况下出现消息提示,那就要按窗口类名、窗口标题来找窗口了。 要实现所谓的”实时监控“,一个是HOOK窗口创建相关的几个API(难度较大),   这样可以截获创建的窗口是不是“被监控”的消息框、它的句柄值是多少。 方法二,就容易实现了,就是用“定时器”事件,不停的“找”有没有被监控窗口(消息框)出现。   如果找到了(出现了),就再找它的“确定”按钮的句柄,发送WM_LBUTTONDBLCLK消息。   毕竟多数情况下,关闭“消息框”实时性要求并不高,只要定时器的时钟周期稍短点就行了。
赵4老师 2017-09-11
  • 打赏
  • 举报
回复
舉杯邀明月 2017-09-11
  • 打赏
  • 举报
回复
引用 4 楼 xiao8xiao 的回复:
[quote=引用 1 楼 Chen8013 的回复:] ………………………………………… 如果是“后台程序”运行之中,在某种情况下出现消息提示,那就要按窗口类名、窗口标题来找窗口了。 …………………………………………
是用VS2010里自带的SPY++吗?[/quote] 我说的Spy++就是那个,VC、VS都带着的,只要安装时选择了“工具”这个组件,它肯定就会被安装。 毕竟对“编程”来说,只要牵涉到“要处理其它程序的窗口”,基本就离不开它(或类似的替代工具)。
舉杯邀明月 2017-09-11
  • 打赏
  • 举报
回复
会用Spy++吗 ? (或者类似功能的别的工具) 在你要“监控”的那个消息框出现时,看看它的类名、标题文字啊! 如果是“看起来很普通”的那种消息框,多半都是调用User32.dll中的 MessageBox实现的, 它的“类名”就是#32770, 标题文本就是标题栏上显示的文字了。 如果是“自绘的消息框”,就要用工具软件来看类名和标题文本了。   比如数字流氓的消息,它的类名是 Q360HIPSClass ,标题好像就是“看到”的标题(记不清楚了,我没安装数字流氓)。 再比如QQ,它“右下角弹窗”,消息框类名是TXGuiFoundation,你可能“看到的标题”是五花八门的有很多不同;   但事实上,它的那个“真正标题文本”只有两个:腾讯视频 和 大成新闻网 无论VB6,还是VB.NET ,使用API的“原则”都是一样的。 只是在“细节”上有一些差别而已:比如,如何声明或引用dll导出函数的“写法”上有所不同。 你自己搜一下 FindWindow和FindWindowEx这两个API的介绍吧,网上到处都是…… 我再在这儿重复也没有什么意义。
xiao8xiao 2017-09-11
  • 打赏
  • 举报
回复
引用 1 楼 Chen8013 的回复:
………………………………………… 如果是“后台程序”运行之中,在某种情况下出现消息提示,那就要按窗口类名、窗口标题来找窗口了。 …………………………………………
是用VS2010里自带的SPY++吗?
xiao8xiao 2017-09-11
  • 打赏
  • 举报
回复
引用 1 楼 Chen8013 的回复:
这跟“平台”无关吧! 各种编程环境中,思路都差不多。 如果是在“用户操作”中弹出的消息框,这个消息应该都是处于“前台”的活动窗口,   可以用 GetForegroundWindow( ) 获取到消息框句柄,   然后以此句柄值查找到“确定”按钮的句柄,向它发送 WM_LBUTTONDBLCLK 就可以了。 如果是“后台程序”运行之中,在某种情况下出现消息提示,那就要按窗口类名、窗口标题来找窗口了。 要实现所谓的”实时监控“,一个是HOOK窗口创建相关的几个API(难度较大),   这样可以截获创建的窗口是不是“被监控”的消息框、它的句柄值是多少。 方法二,就容易实现了,就是用“定时器”事件,不停的“找”有没有被监控窗口(消息框)出现。   如果找到了(出现了),就再找它的“确定”按钮的句柄,发送WM_LBUTTONDBLCLK消息。   毕竟多数情况下,关闭“消息框”实时性要求并不高,只要定时器的时钟周期稍短点就行了。
如何“按窗口类名、窗口标题来找窗口”?可否详细说说,因为确实不懂,而目前仅仅需要这样的一个小程序,所以很难做到再次系统的学习VB.net…………请大神指点。

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧