4 Star 10 Fork 3

sysdzw / clswindow

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MulanPSL-2.0

clswindow v2.3

VB6操作外部程序窗口的类clsWindow2.3使用说明

详细使用说明文档:https://www.kancloud.cn/sysdzw/clswindow

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

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

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

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

使用范例:

1)关闭腾讯新闻窗口“腾讯网迷你版”。

Dim window As New clsWindow
If window.GetWindowHwndByTitle("腾讯网迷你版").hwnd > 0 Then
    window.CloseWindow  '关闭窗口
End If

以上是不是很简洁呢?

2)获取某个打开的记事本里面的内容。假设记事本标题为“测试.txt - 记事本”,通过SPY等工具查看得知记事本的文本框类名为:Edit,那么我们编写程序如下:

Dim window As New clsWindow
If window.GetWindowHwndByTitle("测试.txt - 记事本").hwnd > 0 Then
    MsgBox window.GetElementTextByClassName("Edit")
End If

这个看起来也很简单,方法自由还可以使用正则匹配,可以写成下面这样:

Dim window As New clsWindow
If window.GetWindowHwndByTitleRegExp("测试\.txt.*?").hwnd > 0 Then
    MsgBox window.GetElementTextByClassName("Edi", , True)'第三个参数表示是否使用正则,默认为false
End If

v1.9以上版本已经可以使用连写功能。window.GetWindowHwndByTitle("腾讯网迷你版").CloseWindow 这样写是不是很酷呢? 更多演示案例:

类成员以及各个使用方法如下:

csdn博客链接:

http://blog.csdn.net/sysdzw/article/details/9083313

更新日志

'==============================================================================================
'名    称:windows窗体控制类v2.3
'描    述:一个操作windows窗口的类,可对窗口进行很多常用的操作(类名为clsWindow)
'使用范例:Dim window As New clsWindow
'         window.GetWindowByTitle("计算器").closeWindow' ***!!!win10如果异常请用管理员权限执行***!!!
'编    程:sysdzw 原创开发,如果有需要对模块扩充或更新的话请邮箱发我一份,共同维护
'发布日期:2013/06/01
'博    客:https://blog.csdn.net/sysdzw
'用户手册:https://www.kancloud.cn/sysdzw/clswindow/
'Email   :sysdzw@163.com
'QQ      :171977759
'版    本:V1.0 初版                                                             2012/12/03
'          V1.1 修正了几个正则相关的函数,调整了部分类结构                       2013/05/28
'          V1.2 增加属性Caption,可以获取或设置当前标题栏                        2013/05/29
'          V1.3 增加了方法Focus,可以激活当前窗口                                2013/06/01
'               增加了方法Left,Top,Width,Height,Move,处理窗口位置等
'          V1.4 增加了窗口位置调整的几个函数                                     2013/06/04
'               增加了得到应用程序路径的函数AppName
'               增加了得到应用程序启动参数的函数AppCommandLine
'          V1.5 增加了窗口最大最小化,隐藏显示正常的几个函数                     2013/06/06
'               增加了获取控件相关函数是否使用正则的参数UseRegExp默认F
'          V1.6 将Left,Top函数改为属性,可获得可设置                            2013/06/10
'          V1.7 增加函数:CloseApp 结束进程                                      2013/06/13
'               修正了部分跟正则匹配相关的函数
'               增加函数:GetElementTextByText
'               增加函数:GetElementHwndByText
'          V1.8 增加函数:GetWindowByClassName                                   2013/06/26
'               增加函数:GetWindowByClassNameEx
'               增加函数:GetWindowByAppName
'               增加私有变量hWnd_
'               增加属性hWnd,可设置,单设置时候会检查,非法则设置为0
'               更新GetWindowByTitleEx函数,使之可以选择性支持正则
'               删除GetWindowByTitleRegExp函数,合并到上面函数
'               增加SetFocus函数,调用Focus实现,为了是兼容VB习惯
'               扩了ProcessID、AppPath、AppName、AppCommandLine三个函数,可带参数
'               网友wwb(wwbing@gmail.com)提供了一些函数和方法属性:
'                 CheckWindow, Load, WindowState, Visible, hDC, ZOrder
'                 AlphaBlend, Enabled, Refresh, TransparentColor
'               采纳wwb网友的部分意见,将句柄变量改为hWnd_,但是hWnd作为公共属性
'          V1.9 修正函数:GetMatchHwndFromWindow 正则表达式的错误                2013/08/07
'               修正函数:GetMatchHwndFromWindow 函数中的一些错误                2014/09/23
'               增加函数:GetWindowByClassNameEx
'               增加函数:GetWindowByPID 根据PID取窗口句柄
'               增加函数:GetCaptionByHwnd 根据句柄取得标题
'               增加函数:SetTop设置窗体置顶,传入参数false则取消                2014/09/24
'               增加函数:Shake、FadeIn、FadeOut 抖动、淡入、淡出特效
'          V2.0 修正函数:GetWindowByPID 遍历窗体Win7下有一些问题                2015/09/29
'               修正函数:GetWindowByAppName 遍历窗体Win7下有一些问题
'               修正函数:GetWindowByAppNameEx 遍历窗体Win7下有一些问题
'          V2.1 修正函数:ClickPoint 增加位置模式参数相对和绝对,默认相对        2018/06/05
'               增加函数:SelectComboBoxIndex 根据指定的index选择下拉框中的项
'                         上述方法得到网友Chen8013的不少帮助,特此感谢
'               增加函数:GetWindowByHwnd 根据指定的句柄确定窗口                 2018/07/22
'               增加函数:GetWindowByCursorPos 根据当前光标获取窗口(控件)
'               增加函数:GetWindowByPoint 根据指定的位置获取窗口(控件)
'               升级ClickPoint函数,支持点击前后分别延时,默认延时为0            2018/07/23
'          V2.2 修正正则:网友小凡反应了句柄和id存在负数的情况                   2020/01/08
'               优化属性:Caption(Get),根据网友小凡的建议改成可获得文本框内容
'               增加方法:Wait 此方法原为clsWaitableTimer模块中,现集成进来      2020/01/09
'               增加方法:ClickCurrentPoint 点击当前点                           2020/01/10
'               增加方法:SetCursor(别名:SetPoint MoveCursor MoveCursorTo)
'               更新函数:将所有默认等待超时60秒的函数中默认等待时间都改为10秒
'               增加属性:Text、Value、Title(均为Caption别名)                  2020/01/12
'               优化代码:GetCaptionByHwnd采用原Caption(Get)代码,后者也做了调整
'               增加函数:GetCursorPosCurrent(别名:GetCursorPoint)得到当前坐标
'               优化函数:所有窗口获取的函数增加了是否过滤可见的参数             2020/01/16
'               增加函数:GetTextByHwnd(同GetCaptionByHwnd)
'               优化代码结构。将模块中能移过来的都移到类模块中了                 2020/01/19
'               增加函数:myIsWindowVisibled 判断窗体可见,长宽为0也认为不可见   2020/01/31
'               优化函数:GetTextByHwnd 网友小凡提供                             2020/02/03
'               增加函数:CommandLine(同AppCommandLine)                        2020/02/05
'               增加函数:MakeTransparent 设置窗口透明度                         2020/02/18
'               增加函数:MoveToCenter 移动窗口到屏幕中心
'               增加函数:IsTopmost 判断窗口是否为置顶                           2020/02/20
'               增加函数:GetWindowTextByHwnd 获得窗口标题,给窗口句柄专用       2020/02/28
'               修正函数:Focus 旧方法使用后会改变置顶窗口属性                   2020/03/02
'               增加函数:IsWin64 网友小凡提供                                   2020/03/12
'               修正函数:AppPath 网友小凡提供兼容64位系统的方法
'               修正函数:AppCommandLine 网友小凡做了兼容64位处理及其他代码优化  2020/03/15
'               增加函数:IsForegroundWindow 判断窗口是否为活动窗口              2020/03/17
'               增加函数:GetClassNameByHwnd 根据句柄得到类名
'               增加属性:ClassName(Get) 返回窗口的类名
'               更新函数:CheckWindow 返回值由Long改成Boolean了,并且设为Public
'               增加函数:Click 点击当前句柄或者指定句柄                         2020/06/29
'               更新函数:为兼容win10将设置窗口最大最小化改用SendMessage实现     2021/12/10
'               增加函数:Restore 还原窗口,比如最大最小化后需要还原
'          V2.3 增加函数:SendKeys 替代VB自带的,解决win10下提示拒绝的错误       2022/05/10
'               优化函数:GetMatchHwndFromWindow 设置搜集窗口信息最多尝试10次
'               增加函数:FileToClipboard 设置指定文件到剪切板                   2022/06/26
'               增加函数:Paste 粘贴内容,可以是字符串或文件
'               修正函数:GetWindowByClassNameEx 修复了do里面取类名的错误        2022/08/26
'               增加函数:GetWindowClassNameByHwnd  同GetClassNameByHwnd
'               增加函数:ClickPointBackground 后台点击某窗口中的某个坐标        2022/09/07
'               增加函数:MouseLeftDown 在指定位置鼠标“左”键按下               2022/11/02
'               增加函数:MouseLeftUp 鼠标“左”键松开
'               增加函数:MouseRightDown 在指定位置鼠标“右”键按下
'               增加函数:MouseRightUp 鼠标“右”键松开
'               增加函数:DragTo 鼠标拖动某个点到另一个点
'               增加函数:DragToEx 对上个函数的增强,可以执行一组坐标
'               增加函数:ClipboardSetText 复制文本内容,兼容VBA                 2022/11/22
'               修正函数:FileToClipboard 替换Clipboard对象,改用api实现兼容VBA
'               修正函数:GetWindowByClassName 修复取不到窗口时返回隐藏窗口的bug  2023-12-26
'==============================================================================================

录制鼠标拖动

录制鼠标拖动

播放鼠标拖动

播放鼠标拖动

输入图片说明

测试拖动图标

木兰宽松许可证, 第2版 木兰宽松许可证, 第2版 2020年1月 http://license.coscl.org.cn/MulanPSL2 您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: 0. 定义 “软件”是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 “贡献”是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 “贡献者”是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 “法人实体”是指提交贡献的机构及其“关联实体”。 “关联实体”是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 1. 授予版权许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。 2. 授予专利许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。 3. 无商标许可 “本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。 4. 分发限制 您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 5. 免责声明与责任限制 “软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 6. 语言 “本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。 条款结束 如何将木兰宽松许可证,第2版,应用到您的软件 如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: 1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; 2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; 3, 请将如下声明文本放入每个源文件的头部注释中。 Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. Mulan Permissive Software License,Version 2 Mulan Permissive Software License,Version 2 (Mulan PSL v2) January 2020 http://license.coscl.org.cn/MulanPSL2 Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: 0. Definition Software means the program and related documents which are licensed under this License and comprise all Contribution(s). Contribution means the copyrightable work licensed by a particular Contributor under this License. Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. Legal Entity means the entity making a Contribution and all its Affiliates. Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. 1. Grant of Copyright License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. 2. Grant of Patent License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. 3. No Trademark License No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in Section 4. 4. Distribution Restriction You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. 5. Disclaimer of Warranty and Limitation of Liability THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 6. Language THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. END OF THE TERMS AND CONDITIONS How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: i Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; ii Create a file named “LICENSE” which contains the whole context of this License in the first directory of your software package; iii Attach the statement to the appropriate annotated syntax at the beginning of each source file. Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details.

简介

clsWindow是VB6环境下使用的一个操作外部程序窗口的类,比如得到窗口句柄,得到窗口里某个文本框的内容。非常方便,使用它可以让您脱身于一堆api函数,功能强大使用简单! 这个类楼主很早就开始封装了,原本打算做成类似DOM对象那样,通过一堆getElmentByXXX等方法实现对桌面程序下各个窗口以及里面各个控件对象的自由访问,但是具体要做的工作太多,目前只实现了一部分,期待大家一起加入更新维护。 目前该类封装了绝大部分对windows窗口的常用操作,例如:获取窗口句柄,设置窗口为活动窗口,设置窗口内文本框内容,点击窗口内的某些按钮等。 这个类现在还在一直不断地扩充,功能已经很强大很广泛,使用它可以轻而易举地设置窗口标题栏文字,移动窗体等等。以前要实现这些操作常常... 展开 收起
Visual Basic 等 2 种语言
MulanPSL-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Visual Basic
1
https://gitee.com/sysdzw/clswindow.git
git@gitee.com:sysdzw/clswindow.git
sysdzw
clswindow
clswindow
master

搜索帮助