【分享】一个可以方便快捷操作外部程序窗口的类clsWindow

无·法 2013-06-13 05:53:34
加精
功能说明

clsWindow是VB6环境下使用的一个操作外部程序窗口的类,比如得到窗口句柄,得到窗口里某个文本框的内容。非常方便,使用它可以让您脱身于一堆api函数,功能强大使用简单!

这个类楼主很早就开始封装了,原本打算做成类似DOM对象那样,通过一堆getElmentByXXX等方法实现对桌面程序下各个窗口以及里面各个控件对象的自由访问,但是具体要做的工作太多,目前只实现了一部分,期待大家一起加入更新维护。

目前该类封装了绝大部分对windows窗口的常用操作,例如:获取窗口句柄,设置窗口为活动窗口,设置窗口内文本框内容,点击窗口内的某些按钮等。

这个类现在还在一直不断地扩充,功能已经很强大很广泛,使用它可以轻而易举地设置窗口标题栏文字,移动窗体等等。以前要实现这些操作常常需要一大堆api函数,现在只需要一点点代码就可以了,完全让您脱身于api函数的海洋。当然需要您需要研究每个方法实现原理的话可以看一看源代码。


使用范例:

1)关闭腾讯新闻窗口“腾讯网迷你版”。
Dim window As New clsWindow
If window.GetWindowHwndByTitle("腾讯网迷你版") > 0 Then
window.CloseWindow '关闭窗口
End If

以上是不是很简洁呢?

2)获取某个打开的记事本里面的内容。假设记事本标题为“测试.txt - 记事本”,通过SPY等工具查看得知记事本的文本框类名为:Edit,那么我们编写程序如下:
Dim window As New clsWindow
If window.GetWindowHwndByTitle("测试.txt - 记事本") > 0 Then
MsgBox window.GetElementTextByClassName("Edit")
End If

这个看起来也很简单,方法自由还可以使用正则匹配,可以写成下面这样:
Dim window As New clsWindow
If window.GetWindowHwndByTitleRegExp("测试\.txt.*?") > 0 Then
MsgBox window.GetElementTextByClassName("Edi", , True)'第三个参数表示是否使用正则,默认为false
End If



更多演示案例:

演示程序一(关闭包含“扫雷、蜘蛛纸牌”等系统自带游戏的窗口):
http://files.cnblogs.com/sysdzw/clsWindow1.7_demo1.rar

演示程序二(调用系统计算器,点击里面的按钮进行计算):
http://files.cnblogs.com/sysdzw/clsWindow1.7_demo2.rar

演示程序三(激活移动外部程序窗口):
http://files.cnblogs.com/sysdzw/clsWindow1.7_demo3.rar

演示程序四(调用系统计算器,花样移动出现,效果很好):
http://files.cnblogs.com/sysdzw/clsWindow1.7_demo4.rar



类成员列表以及使用方法:


clsWindow1.7下载地址:
http://download.csdn.net/detail/sysdzw/5573801

clsWindow类最新版下载请关注博客:
http://blog.csdn.net/sysdzw/article/details/9083313
...全文
9816 145 打赏 收藏 转发到动态 举报
写回复
用AI写文章
145 条回复
切换为时间正序
请发表友善的回复…
发表回复
kxyzjm62 2013-11-22
  • 打赏
  • 举报
回复
ndsc213456789 2013-11-12
  • 打赏
  • 举报
回复
mark,窗口操作的好东西
小胖猫 2013-06-24
  • 打赏
  • 举报
回复
25107885, 专业游戏程序员讨论群, 接受猎头,HR,以及游戏开发一年以上经验的后端程序
u011161676dd 2013-06-22
  • 打赏
  • 举报
回复
站在巨人肩膀 2013-06-22
  • 打赏
  • 举报
回复
很好,学习了。。
weiyang1990 2013-06-21
  • 打赏
  • 举报
回复
看不懂
jntcf 2013-06-20
  • 打赏
  • 举报
回复
无·法 2013-06-20
  • 打赏
  • 举报
回复
引用 134 楼 bcrun 的回复:
引用 123 楼 sysdzw 的回复:
[quote=引用 122 楼 eaqpi 的回复:] 如何在DataGridView中定位和输入字符呢?
这个没有明确的控件句柄,只能根据绝对位置,点击然后发送字符。参考clickpoint方法,然后sendkeys
win7下用不了sendkeys吧,会报: --------------------------- Microsoft Visual Basic --------------------------- 实时错误 '70': 拒绝的权限 --------------------------- 确定 帮助 --------------------------- 至少具体少了什么我也不知[/quote]我估计是win7本身的安全性比较高。或者是什么UAC?尝试使用什么管理员身份执行程序看看。
qqududheg 2013-06-20
  • 打赏
  • 举报
回复
感谢楼主分享'''''shhsuwsdndufenhd
bcrun 2013-06-20
  • 打赏
  • 举报
回复
引用 123 楼 sysdzw 的回复:
引用 122 楼 eaqpi 的回复:
如何在DataGridView中定位和输入字符呢?
这个没有明确的控件句柄,只能根据绝对位置,点击然后发送字符。参考clickpoint方法,然后sendkeys
win7下用不了sendkeys吧,会报: --------------------------- Microsoft Visual Basic --------------------------- 实时错误 '70': 拒绝的权限 --------------------------- 确定 帮助 --------------------------- 至少具体少了什么我也不知
u011139146 2013-06-20
  • 打赏
  • 举报
回复
kan le you dian tou yun
XC773640 2013-06-20
  • 打赏
  • 举报
回复
楼主好人,谢谢啊
bcrun 2013-06-19
  • 打赏
  • 举报
回复
引用 103 楼 sysdzw 的回复:
给点有用的建议,纯表情就不要回复了。老接收到通知。
其实很多纯表情回复,直接点那个“对我有用”就可以了,估计有些人还是在攒可用分。
无·法 2013-06-19
  • 打赏
  • 举报
回复
引用 122 楼 eaqpi 的回复:
如何在DataGridView中定位和输入字符呢?
这个没有明确的控件句柄,只能根据绝对位置,点击然后发送字符。参考clickpoint方法,然后sendkeys
eaqpi 2013-06-19
  • 打赏
  • 举报
回复
如何在DataGridView中定位和输入字符呢?
cbq6666 2013-06-19
  • 打赏
  • 举报
回复
学习了~~~~~~~~~
可西哥 2013-06-19
  • 打赏
  • 举报
回复
是个精品,收藏之。 不过我感觉在64位的系统里可能会有些问题;
u011122751 2013-06-19
  • 打赏
  • 举报
回复
支持楼主
XIOOU 2013-06-18
  • 打赏
  • 举报
回复
件安装需重新启动机器,然而启动机器后又提示重新启动机器,然而反复重新启动仍然出现这样的提示,导致软件不能安装。现在给出解决方案:
大小师傅 2013-06-18
  • 打赏
  • 举报
回复
加载更多回复(95)

1,451

社区成员

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

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