ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 10430|回复: 44

操作QQ、微信等外部窗口,介绍一个类clsWindow.

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2020-2-14 11:25 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:Windows API应用
本帖最后由 HHAAMM 于 2020-2-14 12:01 编辑

clsWindowVB6VBA环境下使用的一个操作外部程序窗口的类,比如得到窗口句柄,得到窗口里某个文本框的内容。非常方便,使用它可以让您脱身于一堆api函数,功能强大使用简单!
目前该类封装了绝大部分对windows窗口的常用操作,例如:获取窗口句柄,设置窗口为活动窗口,设置窗口内文本框内容,点击窗口内的某些按钮等。
这个类现在还在一直不断地扩充,功能已经很强大很广泛,使用它可以轻而易举地设置窗口标题栏文字,移动窗体等等。以前要实现这些操作常常需要一大堆api函数,现在只需要一点点代码就可以了,完全让您脱身于api函数的海洋。当然您如果想知道里面的方法实现原理的话可以看一看源代码.
A.gif
clsWindow类简单测试文件.rar (85.31 KB, 下载次数: 398)

clsWindow窗口控制类v2.0使用手册;
clsWindow窗口控制类是vb6中的一个类模;方法或函数命名规范;?AlphaBlend公有函数,设置窗体透明;?AppCommandLine公有函数,返回窗AppendElementTextByClas?AppName公有函数,返回窗口所属进程的文件;?AppPath公有函数,返回窗口所属进程文件所
clsWindow窗口控制类v2.0使用手册
clsWindow窗口控制类是vb6中的一个类模块,可以方便地对其他程序或者本程序的窗口里的控件进行控制,比如设置文字获取文字等等。
方法或函数命名规范。比如要获取窗口就是GetWindowByxx的方式来,根据标题根据pid还是根据类名,看哪个方便根据什么来。要获取控件的属性也是类似的方法。如果对webdom模型熟悉的话使用此类会更加熟练。下面按字母顺序对各个成员进行说明。
AlphaBlend  公有函数,设置窗体透明
AppCommandLine  公有函数,返回窗口所属进程的完整参数
AppendElementTextByClassName 公有方法,向当前控件元素中的文字追加文字,适用于文本框Edit类型的控件。参数:要追加的字符串内容。
AppName 公有函数,返回窗口所属进程的文件名
AppPath 公有函数,返回窗口所属进程文件所在的路径
Caption  公有属性,设置或返回当前窗口标题栏文字
CheckWindow 私有函数,检查对应句柄的窗口是否还存在,参数:句柄
ClickElementByClassName  公有函数,根据类名定位点击控件元素,参数:类名,次序
ClickElementByText
公有函数,根据控件文字定位点击控件元素,参数:文字内容,
ClickPoint 公有函数,根据坐标点击某个点,参数:横坐标,纵坐标
CloseApp 公有函数,关闭窗口所属进程,参数:无
CloseWindow 公有函数,关闭窗口,参数:无
DebugMe 公有变量,表示是否启用调试模式,启用后会输出日志,参数:boolean
DelayOneTime 私有变量,表示检查窗口的间隔,固定为500ms
Enabled 公有属性,根据句柄设置窗口是否禁用或返回窗口是否可用
FadeIn  公有方法,当前窗口产生淡入效果。参数有:淡入速度,默认为10,最大为
255. 函数从0255完成淡入,间隔为50ms,参数就是设置的步长。数字越大淡入越快。可以测试看下。
FadeOut 公有方法,当前窗口产生淡出效果。参数有:淡出速度,默认为10,最大为
255. 函数从0255完成淡出,间隔为50ms,参数就是设置的步长。数字越大淡出越快。可以测试看下。
Focus 公有方法,设置窗口为活动窗口,参数:无
GetCaptionByHwnd
GetDesktopWindow
公有函数,根据文字得到控件句柄,参数:类名,次序
GetElementHwndByClassName
次序 公有函数,根据类名得到控件句柄,参数:类名,
GetElementHwndByText
字内容,次序,是否使用正则
公有函数,根据控件的内容得到该控件的句柄,参数:文
GetElementTextByClassName 公有函数,根据类名得到控件文字内容,参数:文字
GetElementTextByText
GetMatchHwndFromWindow
GetWindowByAppName
GetWindowByAppNameEx 公有函数,根据进程得到该进程的第一个窗口句柄,参数:公有函数,根据进程得到该进程的第一个窗口句柄,参数:私有函数,根据字符串完整匹配得到对应的控件句柄,公有函数,根据文字得到控件文字内容,参数:文字内容,
进程名。和不带Ex的区别就是可以模糊匹配还可以使用正则,功能更强大,使用方法更丰富。
GetWindowByClassName 公有函数,根据类名得到窗口句柄,完整匹配方式,参数:
GetWindowByClassNameEx
参数:字符串 公有函数,根据类名得到窗口句柄,模糊匹配方式,
GetWindowByPID
GetWindowByTitle 公有函数,根据文字得到窗口句柄,完整匹配方式,参数:字符串
GetWindowByTitleEx 公有函数,根据文字得到窗口句柄,可用正则匹配方式,参数:
hDC 公有属性,返回DC场景句柄,参数:无
Height 公有属性,设置或返回窗口的高度,参数:无
Hide 公有函数,隐藏窗口,参数:无
hWnd 公有函数,类的窗口句柄,参数:无
hWnd_ 私有函数,类的窗口句柄,参数:无
  Left  公有属性,设置或返回窗口左上顶点横坐标,参数:无  Load 私有函数,传递窗口句柄进来,其实可以直接设置hWnd_,参数:无  Maximized 公有函数,设置窗口最大化,参数:无  Minimized 公有函数,设置窗口最小化,参数:无
Move 公有函数,移动窗口,和VBmove一样的方法,参数:左,右,宽,高
Normal 公有函数,设置窗口大小模式正常,参数:无
PROCESS_ALL_ACCESS
ProcessID 公有函数,根据类名定位设置控件文字内容,参数:类名,次序
QueryFullProcessImageName
Refresh 公有函数,更新窗口信息,参数:无
SetElementTextByClassName 公有函数,根据句柄设置窗口是否激活,可以直接用
Focus,参数:无
SetElementTextByText 公有函数,根据控件文字定位设置控件文字内容,参数:控件
SetFocus 公有函数,返回当前窗口所属进程PID,参数:无 SetPosBottom 公有方法,设置窗口最底,参数:无  SetPosFront 公有函数,设置窗口Z轴位置为最底层,参数:无 SetPosNormal 公有函数,设置窗口Z轴位置模式正常,参数:无  SetTop 公有方法,设置当前当前窗口位置最前置顶,参数:Boolean类型,默认是True设置置顶。如果False就取消置顶。
Shake 公有方法,当前窗口产生抖动效果。参数有4个,均可缺省。分别表示1.抖动方向,
可以上下抖、左右抖、上下左右抖,默认上下左右抖 2.抖动频率,单位为毫秒,默认30毫秒一变 3.抖动幅度,默认幅度为10像素 4.抖动次数,默认为25
  Show 公有函数,显示窗口,参数:无  Top  公有属性,设置或返回窗口左上顶点的纵坐标,参数:无  TransparentColor 公有函数,设置指定颜色为透明,异形效果,参数:无  Version  公有方法,返回当前本类版本号  Visible 公有属性,返回或设置窗体是否可见
WAIT 公有函数,延时,参数:毫秒数
Width 公有属性,设置或返回窗口的宽度,参数:无
WindowState 公有属性,设置或返回窗口状态,参数:无
ZOrder 公有函数,设置指定窗口句柄始终再前,参数:无
以上整理的非常简要,不含代码演示,大家可以在实例代码中进行测试,也可以看看函数的实现源代码,从而加深对该类的使用熟练度。如果有谁可以对此类进行一个规范化的帮助文档形式的整理可以发一份给我,谢谢。

评分

5

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-14 11:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 HHAAMM 于 2020-2-19 14:26 编辑

**19楼是原作者上传的最新版本以及使用说明**

(下面问题已解决)
这个类有很多用法,期待大家摸索补充。
类中注释掉的三个函数是在VBA中通不过的,高手看看能否修正。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-14 11:38 | 显示全部楼层
W.ClickPoint 90, 140, , , 200
90 140 这些位置数据是我这里的,如果不成功的话自己调整。

TA的精华主题

TA的得分主题

发表于 2020-2-14 11:55 | 显示全部楼层
谢谢虎版主。
正遇到一个问题,在VB6中调用 Application.FileDialog(),窗口不在屏幕中央。试试能否解决。

TA的精华主题

TA的得分主题

发表于 2020-2-14 11:55 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-14 12:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
山菊花 发表于 2020-2-14 11:55
谢谢虎版主。
正遇到一个问题,在VB6中调用 Application.FileDialog(),窗口不在屏幕中央。试试能否解决。

山版,VB6中用这个完整的

clsWindow.rar

12.53 KB, 下载次数: 132

TA的精华主题

TA的得分主题

发表于 2020-2-14 12:36 | 显示全部楼层
HHAAMM 发表于 2020-2-14 11:38
W.ClickPoint 90, 140, , , 200
90 140 这些位置数据是我这里的,如果不成功的话自己调整。

前几天有个发过那个调用VBS的,怎么我操作时老是提示找不到“发QQ信息。exe”,http://club.excelhome.net/forum. ... ;page=1#pid10230930

TA的精华主题

TA的得分主题

发表于 2020-2-14 12:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
如果QQ最小化处于托盘模式,这个类好像就失效了

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-14 13:27 | 显示全部楼层
本帖最后由 HHAAMM 于 2020-2-14 13:35 编辑
kings12333 发表于 2020-2-14 12:41
如果QQ最小化处于托盘模式,这个类好像就失效了

是的,可能也有其他变通的办法。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-14 13:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
kings12333 发表于 2020-2-14 12:41
如果QQ最小化处于托盘模式,这个类好像就失效了

处于托盘也可以
加一句W.Show,在W.Focus这句之前。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-19 07:55 , Processed in 0.054699 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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