本文已参与「新人创作礼」活动,一起开启掘金创作之路。
通过github下载本框架:github.com/sysdzw/clsw…先点击右边的绿色按钮,然后再点击蓝色按钮
使用手册:clsWindow · 看云
使用范例:01 控制微信发送消息 · clsWindow · 看云
功能描述
clsWindow是VB6环境下使用的一个操作外部程序窗口的类,比如得到窗口句柄,得到窗口里某个文本框的内容。非常方便,使用它可以让您脱身于一堆api函数,功能强大使用简单!
这个类楼主很早就开始封装了,原本打算做成类似DOM对象那样,通过一堆getElmentByXXX等方法实现对桌面程序下各个窗口以及里面各个控件对象的自由访问,但是具体要做的工作太多,目前只实现了一部分,期待大家一起加入更新维护。
目前该类封装了绝大部分对windows窗口的常用操作,例如:获取窗口句柄,设置窗口为活动窗口,设置窗口内文本框内容,点击窗口内的某些按钮等。
这个类现在还在一直不断地扩充,功能已经很强大很广泛,使用它可以轻而易举地设置窗口标题栏文字,移动窗体等等。以前要实现这些操作常常需要一大堆api函数,现在只需要一点点代码就可以了,完全让您脱身于api函数的海洋。当然您需要研究每个方法实现原理的话可以看一看源代码。
使用范例(请在v1.9以上测试):
1)关闭腾讯新闻窗口“腾讯网迷你版”。
Dim window As New clsWindow If window.GetWindowByTitle("腾讯网迷你版").hWnd <> 0 Then window.CloseWindow '关闭窗口 End If
以上是不是很简洁呢?
20150715更新追加:
最新1.9版本更简洁,一句话解决:
w.GetWindowByTitle("腾讯网迷你版").CloseWindow
小伙伴,是不是简洁爆了呢?:)
为了防止程序找不到窗口而一直等待可以改成:
w.GetWindowByTitle("腾讯网迷你版",1).CloseWindow
(意思为超时等待1秒。默认会耐心等60秒。除非你确定窗口一定会有,那么就用上面的不带延时1秒的。)
2)获取某个打开的记事本里面的内容。假设记事本标题为“测试.txt - 记事本”,通过SPY等工具查看得知记事本的文本框类名为:Edit,那么我们编写程序如下:
Dim window As New clsWindow If window.GetWindowByTitle("测试.txt - 记事本").hWnd <> 0 Then MsgBox window.GetElementTextByClassName("Edit") End If
这个看起来也很简单,方法自由还可以使用正则匹配,可以写成下面这样:
Dim window As New clsWindow If window.GetWindowByTitleEx("测试.txt.*?", , , True).hWnd <> 0 Then MsgBox window.GetElementTextByClassName("Edi", , True) '第三个参数表示是否使用正则,默认为false End If
获取标题那边如果觉得要把标题写完整太麻烦,可以将GetWindowByTitle改成GetWindowByTitleEx然后后面只要写关键字就行啦。看招:
Dim window As New clsWindow If window.GetWindowByTitleEx("测试").hWnd <> 0 Then MsgBox window.GetElementTextByClassName("Edit") End If
应用参考:vb怎样操作控制“打开对话框”选择文件-CSDN论坛
更多演示案例:
类成员结构图 V2.2:
clsWindow类最新版下载请关注博客:
一个操作windows窗口的类“clsWindow”,使用非常方便!含源码 V2.2_无·法的博客-CSDN博客_clswindow
使用集锦:
对于一个窗体中存在多个相同类名的输入框该如何区分填写?
【clswindow框架应用】对于一个窗体中存在多个相同类名的输入框该如何区分填写?_无·法的博客-CSDN博客
sysdzw
QQ:171977759
15:09 2013-6-13