CN116107845A - 一种窗口对象的监测和处理方法 - Google Patents
一种窗口对象的监测和处理方法 Download PDFInfo
- Publication number
- CN116107845A CN116107845A CN202310388159.4A CN202310388159A CN116107845A CN 116107845 A CN116107845 A CN 116107845A CN 202310388159 A CN202310388159 A CN 202310388159A CN 116107845 A CN116107845 A CN 116107845A
- Authority
- CN
- China
- Prior art keywords
- window
- real
- protection
- time
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
- Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种窗口对象的监测和处理方法,包括:确定保护窗口;判断是否存在遮挡保护窗口的第一目标窗口;当存在第一目标窗口时,对第一目标窗口进行自动处理;否则,通过主动测试判断保护窗口是否处于可操控状态,如否,则确定影响保护窗口的第二目标窗口,对第二目标窗口进行自动处理。通过主动监测应用窗口的运行信息,获取对保护窗口有遮挡的第一目标窗口,并及时针对遮挡保护窗口的第一目标窗口进行自动处理,使得保护窗口不会被其他程序遮挡;同时,通过判断保护窗口是否处于可操控状态,进一步确定对保护窗口造成影响的不可见的第二目标窗口并及时处理,进一步扩大了监测范围,保证了保护窗口的正常运行。
Description
技术领域
本说明书涉及计算机技术领域,具体涉及一种窗口对象的监测和处理方法。
背景技术
RPA(Robotic Process Automation,机器人流程自动化)软件是指一种可代人工处理大量基于明确规则的、重复性任务的软件,可用于自动执行流程化的任务,RPA软件在提升工作效率和企业生产力方面的作用非常重要。
随着各种应用程序的产生,用户在使用系统的过程中,由于个人需求,会同时打开多种进程,但是,当自动化运行应用程序的显示窗口被覆盖或者遮挡时,可能会对自动化运行应用程序的正常运行造成影响,尤其在金融企业、银行等应用场景中,自动化运行应用程序被影响可能会造成无法挽回的经济损失,给用户带来严重影响。
因此,亟需一种能够保护应用程序正常运行的方法。
发明内容
本发明克服现有技术的缺点,针对自动化应用程序可能会被其他运行程序覆盖或者遮挡的情况,提供一种窗口对象的监测和处理方法,通过主动监测应用窗口的运行信息,及时对保护窗口形成遮挡或覆盖的应用窗口进行自动处理,使得保护窗口不会被其他程序遮挡,进而保证了保护窗口的正常运行。
为了解决以上技术问题,本发明的技术方案如下:
本发明提供一种窗口对象的监测和处理方法,包括:
确定保护窗口;
判断是否存在遮挡保护窗口的第一目标窗口;
当存在第一目标窗口时,对第一目标窗口进行自动处理;
否则,通过主动测试判断保护窗口是否处于可操控状态,如否,则确定影响保护窗口的第二目标窗口,对第二目标窗口进行自动处理。
通过主动监测应用窗口的运行信息,获取对保护窗口存在遮挡的第一目标窗口,并及时针对遮挡保护窗口的第一目标窗口进行自动处理,使得保护窗口不会被其他程序遮挡,保证了保护窗口的正常运行;
同时,通过判断保护窗口是否处于可操控状态,进而判断保护窗口的运行状态,进一步确定对保护窗口造成影响的不可见的第二目标窗口并及时处理,进一步扩大了监测范围,保证了保护窗口的正常运行。
作为优选,判断是否存在遮挡保护窗口的第一目标窗口,包括:
获取实时运行信息;
判断产生实时运行信息的实时窗口是否为保护窗口的前序窗口;
当实时窗口是保护窗口的前序窗口时,判断实时窗口和保护窗口是否存在重叠;
当实时窗口和保护窗口存在重叠时,确定实时窗口为第一目标窗口。
通过依次判断实时窗口是否为保护窗口的前序窗口,以及实时窗口和保护窗口是否存在重叠,高效的识别出遮挡保护窗口的第一目标窗口,提高了整体的计算效率。
实施中,当实时窗口为保护窗口的前序窗口时,判断实时窗口和保护窗口是否存在重叠;当实时窗口和保护窗口存在重叠时,确定实时窗口为第一目标窗口。
作为优选,判断实时窗口和保护窗口是否存在重叠,包括:
获取保护窗口的保护上边界纵坐标、保护下边界纵坐标、保护左边界横坐标和保护右边界横坐标,以及实时窗口的实时上边界纵坐标、实时下边界纵坐标、实时左边界横坐标和实时右边界横坐标;
在以下条件之外,判断实时窗口和保护窗口存在重叠:
保护上边界纵坐标小于实时下边界纵坐标;
和/或,保护下边界纵坐标大于实时上边界纵坐标;
和/或,保护左边界横坐标大于实时右边界横坐标;
和/或,保护右边界横坐标小于实时左边界横坐标。
实时窗口和保护窗口的坐标位置都可以通过对应的句柄信息获取,获取方式简单;通过排除法推算实时窗口和保护窗口的重叠关系,计算方式更加简单,提高了计算效率。
作为优选,判断实时窗口和保护窗口是否存在重叠前,还包括:
判断实时窗口是否为可视窗口;
当实时窗口为可视窗口时,判断实时窗口和保护窗口是否存在重叠;
其中,判断实时窗口是否为可视窗口,包括:
获取实时窗口的实时显示区域;
当实时显示区域不为空时,判断实时窗口为可视窗口。
当确定实时窗口为可视窗口后,再对实时窗口和保护窗口是否存在重叠进行判断,避免了对不是可视窗口的应用窗口进行的不必要的判断,筛除了不必要的计算流程,提高了整体的计算效率。
作为优选,通过主动测试判断保护窗口是否处于可操控状态,包括:
确定监测白名单;
创建测试窗口,其中,测试窗口为在监测白名单的应用窗口;
将测试窗口覆盖在保护窗口上方;
当光标移动到测试窗口区域时,光标所在位置产生空缺区域,保护窗口在空缺区域内不再被覆盖;
通过在空缺区域点击光标,以尝试改变保护窗口的前置属性;
获取保护窗口的目标前置属性,当目标前置属性满足预设前置条件时,判断保护窗口处于可操控状态。
通过增设测试窗口,可以实时监测保护窗口是否处于正常可操控状态,当监测到保护窗口处于程序未响应等不可操控状态时,及时处理,以保证保护窗口的正常运行。
作为优选,确定影响保护窗口的第二目标窗口,包括:
确定点击光标产生的光标运行信息;
根据光标运行信息,确定第二目标窗口。
当保护窗口处于不可操控状态时,进一步确认对保护窗口产生影响的第二目标窗口,并对第二目标窗口进行自动处理,进一步保证了保护窗口的正常运行状态。
作为优选,确定保护窗口后,还包括:
判断是否存在启动窗口;
当存在启动窗口时,对启动窗口进行自动处理。
当确认保护窗口后,禁止系统打开新的启动窗口,避免了运行启动窗口而对保护窗口产生的影响,进一步保证了保护窗口的正常运行。
作为优选,自动处理的方法包括:
对待处理窗口执行关闭操作;
关闭操作成功时,返回第一成功提示信息,自动处理结束;
关闭操作失败时,返回第一失败提示信息;
接收到第一失败提示信息时,对待处理窗口执行最小化操作;
最小化操作成功后,返回第二成功提示信息,自动处理结束。
当监测到有待处理窗口时,优先关闭待处理进程,当待处理进程被关闭,不会影响保护窗口的正常运行;当待处理窗口无法被强制关闭时,将待处理窗口最小化,使得待处理窗口在后台运行,进而避免影响保护窗口的正常运行。系统函数为系统默认的函数,因此,通过调用系统函数处理待处理窗口,无需人工撰写其他关闭方法,节省了人工的工作量,提高了工作效率。
作为优选,对待处理窗口执行关闭操作,包括:
获取待处理窗口的待处理句柄信息;
根据待处理句柄信息,获取待处理窗口的元素节点信息树;
遍历元素节点信息树,确定目标元素节点;
根据目标元素节点,确定第一目标区域;
对第一目标区域执行预设操作,自动处理结束。
通过自动化点击关闭按钮或者最小化按钮,可以方便快捷的对待处理窗口进行自动操作,简单快捷。
作为优选,还包括:
确定监测白名单;
执行自动处理之前,判断监测白名单是否包括待处理窗口;
当监测白名单不包括待处理窗口时,对待处理窗口进行自动处理。
应用窗口运行时,部分应用窗口在最小化状态时不支持后台运行,部分应用窗口的运行信息不影响保护窗口,部分应用窗口有相比保护窗口更高的运行需求,此时,通过设置监测白名单,可以对部分应用窗口进行保护,以适应不同的应用需求和不同的应用场景,同时,对监测白名单中的应用窗口无需进行处理,有助于提高应用的整体效率。
与现有技术相比,本说明书采用的上述技术方案能够达到的有益效果至少包括:
通过主动监测应用窗口的运行信息,获取对保护窗口有遮挡的第一目标窗口,并及时针对遮挡保护窗口的第一目标窗口进行自动处理,使得保护窗口不会被其他程序遮挡,保证了保护窗口的正常运行;
同时,通过判断保护窗口是否处于可操控状态,进而判断保护窗口的运行状态,进一步确定对保护窗口造成影响的不可见的第二目标窗口,并及时对第二目标窗口进行自动处理,进一步扩大了监测范围,保证了保护窗口的正常运行。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。
图1为本发明提供的一种窗口对象的监测和处理方法的流程示意图;
图2为本发明提供的一种窗口对象的监测和处理方法中判断是否存在第一目标窗口的流程示意图;
图3为本发明提供的一种窗口对象的监测和处理方法中一个实施例的流程示意图。
具体实施方式
为使本发明的目的、技术方案以及优点更加清楚明白,下面结合附图和实施例对本发明作进一步详细说明,应当理解的是,此处所描述的具体实施方式仅是本发明的一种最佳实施例,仅用以解释本发明,并不限定本发明的保护范围,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在更加详细地讨论示例性实施例之前,应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作(或步骤)可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤;所述处理可以对应于方法、函数、规程、子例程、子程序等等。
为使本发明的内容更容易被清楚地理解,下面根据具体实施方式并结合附图,对本发明作出进一步详细的说明。
实施例:如图1所示,本说明书实施例提供一种窗口对象的监测和处理方法,包括:
确定保护窗口;
判断是否存在遮挡保护窗口的第一目标窗口;
当存在第一目标窗口时,对第一目标窗口进行自动处理;
否则,通过主动测试判断保护窗口是否处于可操控状态,如否,则确定影响保护窗口的第二目标窗口,对第二目标窗口进行自动处理。
实施中,保护窗口开始运行时,获取到保护窗口的保护句柄信息,即确定保护窗口;其中,保护窗口为要保护的正在运行的应用窗口。
实施中,第一目标窗口是指对保护窗口形成遮挡的应用窗口,即,第一目标窗口和保护窗口存在重叠区域且第一目标窗口位于保护窗口的上方;因此,当应用窗口和保护窗口不存在重叠区域,或者应用窗口位于保护窗口的下方时,不作为第一目标窗口处理。
实施中,当确定保护窗口没有被遮挡时,通过主动测试判断保护窗口是否处于可操控状态,当保护窗口处于不可操控状态时,确定是否存在第二目标窗口,其中,第二目标窗口对保护窗口没有形成遮挡,但是第二目标窗口的后台运行程序对保护窗口的正常运行造成了影响。
具体地,比如部分应用窗口启动时自动调用快捷键命令,当调用快捷键命令时,会选定系统显示界面的部分或全部显示区域;当保护窗口处于被选定的显示区域时,保护窗口的正常运行受影响。
通过主动监测应用窗口的运行信息,获取对保护窗口有遮挡的第一目标窗口,并及时针对遮挡保护窗口的第一目标窗口进行自动处理,使得保护窗口不会被其他应用窗口遮挡,保证了保护窗口的正常运行;
同时,通过判断保护窗口是否处于可操控状态,进而判断保护窗口的运行状态,进一步确定对保护窗口造成影响的不可见的第二目标窗口,并及时对第二目标窗口进行自动处理,进一步扩大了监测范围,保证了保护窗口的正常运行。
在一些实施方式中,判断是否存在遮挡保护窗口的第一目标窗口,包括:
获取实时运行信息;
判断产生实时运行信息的实时窗口是否为保护窗口的前序窗口;
当实时窗口是保护窗口的前序窗口时,判断实时窗口和保护窗口是否存在重叠;
当实时窗口和保护窗口存在重叠时,确定实时窗口为第一目标窗口。
实施中,如图2所示,获取实时运行信息,其中,实时运行信息为非保护窗口产生的运行信息;判断产生实时运行信息的实时窗口是否为保护窗口的前序窗口,当实时窗口不是保护窗口的前序窗口时,不存在第一目标窗口;当实时窗口是保护窗口的前序窗口时,判断实时窗口和保护窗口是否存在重叠;当实时窗口不是保护窗口的前序窗口时,不存在第一目标窗口;当实时窗口和保护窗口存在重叠时,确定实时窗口为第一目标窗口。
实施中,监测实时运行信息的方式包括:Dll文件注入、监测系统进程列表和注册事件监听函数。
在一个具体的实施例中,创建自定义Dll(Dynamic Link Library,动态链接库)文件,调用系统函数SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,hInstDll,0)实现自定义Dll文件注入;
其中,参数WH_GETMESSAGE为要安装的挂钩,用于获取系统消息;参数GetMsgProc为自定义函数,用于在自定义Dll文件监测到被注入进程即将处理一条系统消息时被调用;参数hInstDll为自定义Dll文件的虚拟内存地址;参数0代表要给所有GUI线程进行挂钩;
当被注入进程中的一个线程准备发送消息时,被注入进程会检查该线程是否安装了WH_GETMESSAGE挂钩,当该线程安装了挂钩时,调用自定义处理函数GetMsgProc,获取到实时运行信息。
实施中,当获取到实时运行信息后,判断实时窗口是否为保护窗口的前序窗口。
在一个具体的实施方式中,获取保护窗口的前置属性,当保护窗口的前置属性为真时,保护窗口为系统显示界面的顶部窗口,确定实时窗口不是保护窗口的前序窗口;当实时窗口的前置属性为真时,实时窗口为系统显示界面的顶部窗口,确定实时窗口是保护窗口的前序窗口;其中,前置属性用于表示应用窗口显示在系统显示界面顶端时的属性。
在一个具体的实施方式中,分别获取实时窗口和保护窗口的z序,当实时窗口的z序大于保护窗口的z序时,判断实时窗口为保护窗口的前序窗口,否则,实时窗口不是保护窗口的前序窗口;
需要说明的是,当多个应用窗口堆叠在一起时,多个应用窗口沿着一个虚拟的“z轴”排序,从屏幕上垂直向屏幕外延伸,z序表示对应的应用窗口在重叠的多个应用窗口中的位置,即,每一个应用窗口有唯一的z序,且覆盖在上方的前序窗口的z序数值大于被覆盖的窗口的z序数值。
实施中,当实时窗口为保护窗口的前序窗口时,判断实时窗口和保护窗口是否存在重叠;当实时窗口和保护窗口存在重叠时,确定实时窗口为第一目标窗口。
在一些实施方式中,判断实时窗口和保护窗口是否存在重叠,包括:
获取保护窗口的保护上边界纵坐标、保护下边界纵坐标、保护左边界横坐标和保护右边界横坐标,以及实时窗口的实时上边界纵坐标、实时下边界纵坐标、实时左边界横坐标和实时右边界横坐标;
在以下条件之外,判断实时窗口和保护窗口存在重叠:
保护上边界纵坐标小于实时下边界纵坐标;
和/或,保护下边界纵坐标大于实时上边界纵坐标;
和/或,保护左边界横坐标大于实时右边界横坐标;
和/或,保护右边界横坐标小于实时左边界横坐标。
实施中,获取保护窗口的保护句柄信息,通过保护句柄信息获取保护窗口的保护上边界纵坐标、保护下边界纵坐标、保护左边界横坐标和保护右边界横坐标;获取实时窗口的实时句柄信息,通过实时句柄信息获取实时窗口的实时上边界纵坐标、实时下边界纵坐标、实时左边界横坐标和实时右边界横坐标。
实施中,当保护上边界纵坐标小于实时下边界纵坐标,保护窗口一定位于保护窗口下方,保护窗口可能位于保护窗口左下方、正下方、右下方;因此,当保护上边界纵坐标小于实时下边界纵坐标时,实时窗口和保护窗口一定不存在重叠;
实施中,当保护下边界纵坐标大于实时上边界纵坐标,保护窗口一定位于保护窗口上方,即,保护窗口可能位于保护窗口左上方、正上方、右上方;因此,当保护下边界纵坐标大于实时上边界纵坐标时,实时窗口和保护窗口一定不存在重叠;
实施中,当保护左边界横坐标大于实时右边界横坐标,保护窗口一定位于保护窗口右侧,即,保护窗口可能位于保护窗口右上方、正右方、右下方;因此,当保护左边界横坐标大于实时右边界横坐标时,实时窗口和保护窗口一定不存在重叠;
实施中,当保护右边界横坐标小于实时左边界横坐标,保护窗口一定位于保护窗口左侧,即,保护窗口可能位于保护窗口左上方、正左方、左下方;因此,当保护右边界横坐标小于实时左边界横坐标时,实时窗口和保护窗口一定不存在重叠。
实时窗口和保护窗口的坐标位置都可以通过对应的句柄信息获取,获取方式简单;并且,由于两者均为矩形窗口,当实时窗口和保护窗口存在重叠时,两者至少有两条边界线相交,因此,通过排除法推算实时窗口和保护窗口的重叠关系,计算方式更加简单,提高了计算效率。
在一些实施方式中,判断实时窗口和保护窗口是否存在重叠前,还包括:
判断实时窗口是否为可视窗口;
当实时窗口为可视窗口时,判断实时窗口和保护窗口是否存在重叠;
其中,判断实时窗口是否为可视窗口,包括:
获取实时窗口的实时显示区域;
当实时显示区域不为空时,判断实时窗口为可视窗口。
实施中,获取实时窗口的实时句柄信息,通过实施句柄信息获取到实时窗口的实时显示区域;当实时显示区域不为空时,实时窗口在显示界面有实时显示区域,实时窗口为可视窗口,此时,判断实时窗口和保护窗口是否存在重叠;当实时显示区域为空,比如实时窗口处于最小化状态时,实时窗口在显示界面没有实时显示区域,实时窗口和保护窗口不会存在重叠区域,无需对实时窗口和保护窗口是否存在重叠进行计算。
实施中,在Windows系统中,可以通过调用系统函数IsWindowVisible函数,获取实时窗口的可视状态,当实时窗口为显示状态时,确定实时窗口为可视窗口。
当确定实时窗口为可视窗口后,再对实时窗口和保护窗口是否存在重叠进行判断,避免了对不是可视窗口的应用窗口进行的不必要的判断,筛除了不必要的计算流程,提高了整体的计算效率。
在一些实施方式中,通过主动测试判断保护窗口是否处于可操控状态,包括:
确定监测白名单;
创建测试窗口,其中,测试窗口为在监测白名单的应用窗口;
将测试窗口覆盖在保护窗口上方;
当光标移动到测试窗口区域时,光标所在位置产生空缺区域,保护窗口在空缺区域内不再被覆盖;
通过在空缺区域点击光标,以尝试改变保护窗口的前置属性;
获取保护窗口的目标前置属性,当目标前置属性满足预设前置条件时,判断保护窗口处于可操控状态。
实施中,确定监测白名单,其中,监测白名单包括的应用窗口不需要进行自动处理。
实施中,创建一个测试窗口,测试窗口为在监测白名单中的应用窗口,因此,当测试窗口产生运行信息时,不会被自动处理;优选地,测试窗口为透明窗口;
将测试窗口覆盖在保护窗口上方,即,测试窗口为保护窗口的前序窗口,此时,测试窗口的前置属性为真,保护窗口的前置属性为假;
当光标移动到测试窗口区域时,光标所在位置产生空缺区域,保护窗口在空缺区域内不再被覆盖;优选地,为空缺区域配置标识样式,比如:空缺区域外边框、空缺区域下沉和空缺区域上浮等,用以在测试窗口区域上突显出空缺区域。
在空缺区域处点击光标,光标通过空缺区域点击保护窗口,当保护窗口处于可操控状态时,保护窗口被选中并遮挡在测试窗口上方,即,保护窗口变成测试窗口的前序窗口,此时,保护窗口的目标前置属性为真,测试窗口的前置属性为假;获取保护窗口的目标前置属性,当目标前置属性满足预设前置条件,即目标前置属性为真时,判断保护窗口处于可操控状态。
在空缺区域点击光标,如若点击光标无法选中保护窗口,即,测试窗口依然为保护窗口的前序窗口,保护窗口的目标前置属性不变,判断保护窗口处于不可操控状态。
通过增设测试窗口,可以实时监测保护窗口是否处于正常可操控状态,当监测到保护窗口处于程序未响应等不可操控状态时,及时处理,以保证保护窗口的正常运行。
在一些实施方式中,确定影响保护窗口的第二目标窗口,包括:
确定点击光标产生的光标运行信息;
根据光标运行信息,确定第二目标窗口。
实施中,点击光标无法选中保护窗口时,可能存在第二目标窗口影响保护窗口的正常运行,点击光标产生的光标运行信息即为触发第二目标窗口发生的光标运行信息,根据光标运行信息,确定第二目标窗口。
当保护窗口处于不可操控状态时,进一步确认对保护窗口产生影响的第二目标窗口,并对第二目标窗口进行自动处理,进一步保证了保护窗口的正常运行状态。
在一些实施方式中,确定保护窗口后,还包括:
判断是否存在启动窗口;
当存在启动窗口时,对启动窗口进行自动处理。
实施中,确定保护窗口后,监测到启动窗口时,对启动窗口进行自动处理。
在一个具体的实施方式中,采用注入Dll文件监测并获取启动运行信息。在windows系统中,创建自定义的Dll文件,并存储至系统目录下;修改注册表键“AppInit_DLLs”的值为自定义Dll文件的路径,创建注册表键“LoadAppInit_DLLs”并设置值为1;
当产生启动窗口时,系统收到启动运行信息,获取启动窗口的注册表键“AppInit_DLLs”的启动值,调用系统函数加载启动值中指定的Dll文件,当系统载入每个Dll文件的时候,调用系统中的初始化函数对每个Dll文件执行初始化操作,进而获取到启动窗口的信息,并对启动窗口进行自动处理。
当确认保护窗口后,禁止系统打开新的启动窗口,避免了运行启动窗口而对保护窗口产生的影响,进一步保证了保护窗口的正常运行。
在一些实施方式中,自动处理的方法包括:
对待处理窗口执行关闭操作;
关闭操作成功时,返回第一成功提示信息,自动处理结束;
关闭操作失败时,返回第一失败提示信息;
接收到第一失败提示信息时,对待处理窗口执行最小化操作;
最小化操作成功后,返回第二成功提示信息,自动处理结束。
实施中,自动处理包括:自动关闭待处理窗口,当自动关闭待处理窗口失败时,将待处理窗口最小化。
实施中,自动处理的方法包括:获取待处理窗口的待处理句柄信息,调用系统函数中的销毁函数,将待处理句柄信息输入至销毁函数,对待处理窗口执行销毁操作,销毁操作成功即为关闭操作成功,返回第一成功提示信息,自动处理结束;销毁操作失败即为关闭操作失败,返回第一失败提示信息;调用系统函数中的最小化函数,将待处理句柄信息输入至最小化函数,对待处理窗口执行最小化操作,最小化操作成功后,返回第二成功提示信息,自动处理结束。
实施中,自动处理的方法包括:获取待处理窗口的待处理进程ID,调用命令提示符中的关闭进程函数,根据待处理进程ID,对待处理窗口执行关闭操作;关闭操作成功时,返回第一成功提示信息,自动处理结束;关闭操作失败时,返回第一失败提示信息;调用命令提示符中的最小化进程函数,根据待处理进程ID,对待处理窗口执行最小化操作,最小化操作成功后,返回第二成功提示信息,自动处理结束。
当监测到有待处理窗口时,优先关闭待处理进程,当待处理进程被关闭,不会影响保护窗口的正常运行;当待处理窗口无法被强制关闭时,将待处理窗口最小化,使得待处理窗口在后台运行,进而避免影响保护窗口的正常运行。系统函数为系统默认的函数,因此,通过调用系统函数处理待处理窗口,无需人工撰写其他关闭方法,节省了人工的工作量,提高了工作效率。
在一些实施方式中,对待处理窗口执行关闭操作,包括:
获取待处理窗口的待处理句柄信息;
根据待处理句柄信息,获取待处理窗口的元素节点信息树;
遍历元素节点信息树,确定目标元素节点;
根据目标元素节点,确定第一目标区域;
对第一目标区域执行预设操作,自动处理结束。
实施中,通过待处理窗口的待处理句柄信息提取到待处理窗口,基于辅助技术框架uiautomation确定待处理窗口的元素节点信息树。
需要说明的是,uiautomation是一个测试框架,可通过元素定位的方式获取待处理窗口界面的元素,比如按钮、文本框、下拉框,并控制光标进行点击、输入文本等操作。优选地,可以通过uiautomation框架自带的脚本工具automation.py来获取元素定位,或使用元素定位工具,比如spy++、Inspect.exe、UIspy.exe等元素定位工具,获取元素定位。
实施中,当存在待处理窗口时,遍历元素节点信息树,确定关闭按钮节点,确定关闭按钮节点的条件包括:名称属性Name中包含“x”、“X”或“关闭”的节点,或帮助属性HelpText中包含“关闭”的节点;
确定关闭按钮节点后,提取关闭按钮节点的显示区域,将光标移动到关闭按钮节点的显示区域,自动化点击关闭按钮,实现自动处理。
实施中,当接收到第一失败提示信息后,遍历元素节点信息树,确定最小化按钮节点,确定最小化按钮节点的条件包括:名称属性Name中包含“-”或“最小化”的节点,或帮助属性HelpText中包含“最小化”的节点;
确定最小化按钮节点后,提取最小化按钮节点的显示区域,将光标移动到最小化按钮节点的显示区域,自动化点击关闭按钮,实现自动处理。
在一个具体的实施方式中,当遍历元素节点信息树无法确定目标元素节点时,采用坐标定位的方式获取关闭按钮的显示区域,包括:
获取待处理窗口的显示区域的右上角顶点坐标;将右上角顶点坐标的横坐标和纵坐标分别减少15个单位,得到第一目标点的第一坐标;以显示区域的右上角顶点和第一目标点作为对角线,确定正方形区域;自动化点击正方形区域,自动处理结束。
通过自动化点击关闭按钮或者最小化按钮,可以方便快捷的对待处理窗口进行自动操作,简单快捷。
在一些实施方式中,还包括:
确定监测白名单;
执行自动处理之前,判断监测白名单是否包括待处理窗口;
当监测白名单不包括待处理窗口时,对待处理窗口进行自动处理。
实施中,执行自动处理之前,获取监测白名单的所有白名单进程ID,依次对比待处理窗口进程ID和白名单进程ID是否相同,若相同,不用对待处理进程做自动处理;若不同,对待处理窗口进行自动处理。
应用窗口运行时,部分应用窗口在最小化状态时不支持后台运行,部分应用窗口的运行信息不影响保护窗口,部分应用窗口有相比保护窗口更高的运行需求,此时,通过设置监测白名单,可以对部分应用窗口进行保护,以适应不同的应用需求和不同的应用场景,同时,对监测白名单中的应用窗口无需进行处理,有助于提高整体的处理效率。
实施例:如图3所示,本说明书实施例提供一种窗口对象的监测和处理方法,包括:
确定保护窗口,当保护窗口被打开时,获取实时运行信息;
监测实时运行信息的方式包括:Dll文件注入、监测系统进程列表和注册事件监听函数;其中,Dll文件注入主要用于监测启动窗口,监测系统进程列表主要用于监测对保护窗口存在遮挡的实时窗口,注册事件监听函数主要用于捕获windows系统中的windows消息;
当确定存在影响保护窗口的待处理窗口时,判断待处理窗口是否在监测白名单,若监测白名单包括待处理窗口,待处理窗口不需要进行自动处理;若监测白名单不包括待处理窗口,则对待处理窗口进行自动处理;
自动处理包括:自动关闭待处理窗口,当自动关闭待处理窗口失败时,自动最小化待处理窗口;
自动处理的方法包括:调用系统函数自动处理、调用关闭进程函数自动处理和基于机器人流程自动化自动处理;
调用系统函数自动处理的方法具体为:调用系统函数中的销毁函数,将待处理句柄信息输入至销毁函数,对待处理窗口执行销毁操作,销毁操作成功即为关闭操作成功,返回第一成功提示信息,自动处理结束;销毁操作失败即为关闭操作失败,返回第一失败提示信息;调用系统函数中的最小化函数,将待处理句柄信息输入至最小化函数,对待处理窗口执行最小化操作,最小化操作成功后,返回第二成功提示信息,自动处理结束;
调用关闭进程函数自动处理的方法具体为:调用命令提示符中的关闭进程函数,根据待处理进程ID,对待处理窗口执行关闭操作;关闭操作成功时,返回第一成功提示信息,自动处理结束;关闭操作失败时,返回第一失败提示信息;调用命令提示符中的最小化进程函数,根据待处理进程ID,对待处理窗口执行最小化操作,最小化操作成功后,返回第二成功提示信息,自动处理结束;
基于机器人流程自动化自动处理的方法具体为:获取待处理窗口的待处理句柄信息;根据待处理句柄信息,获取待处理窗口的元素节点信息树;遍历元素节点信息树,确定关闭元素节点;根据关闭元素节点,确定关闭按钮的区域,点击关闭按钮的区域,执行关闭操作;关闭操作成功时,返回第一成功提示信息,自动处理结束;关闭操作失败时,返回第一失败提示信息;遍历元素节点信息树,确定最小化元素节点;根据最小化元素节点,确定最小化按钮的区域,点击最小化按钮的区域,执行最小化操作;最小化操作成功后,返回第二成功提示信息,自动处理结束;
自动处理结束后,继续监测实时运行信息,直到保护窗口的进程退出应用。
以上所述之具体实施方式为本发明一种窗口对象的监测和处理方法的较佳实施方式,并非以此限定本发明的具体实施范围,本发明的范围包括并不限于本具体实施方式,凡依照本发明之形状、结构所作的等效变化均在本发明的保护范围内。
Claims (10)
1.一种窗口对象的监测和处理方法,其特征在于,包括:
确定保护窗口;
判断是否存在遮挡保护窗口的第一目标窗口;
当存在第一目标窗口时,对第一目标窗口进行自动处理;
否则,通过主动测试判断保护窗口是否处于可操控状态,如否,则确定影响保护窗口的第二目标窗口,对第二目标窗口进行自动处理。
2.根据权利要求1所述的一种窗口对象的监测和处理方法,其特征在于,判断是否存在遮挡保护窗口的第一目标窗口,包括:
获取实时运行信息;
判断产生实时运行信息的实时窗口是否为保护窗口的前序窗口;
当实时窗口是保护窗口的前序窗口时,判断实时窗口和保护窗口是否存在重叠;
当实时窗口和保护窗口存在重叠时,确定实时窗口为第一目标窗口。
3.根据权利要求2所述的一种窗口对象的监测和处理方法,其特征在于,判断实时窗口和保护窗口是否存在重叠,包括:
获取保护窗口的保护上边界纵坐标、保护下边界纵坐标、保护左边界横坐标和保护右边界横坐标,以及实时窗口的实时上边界纵坐标、实时下边界纵坐标、实时左边界横坐标和实时右边界横坐标;
在以下条件之外,判断实时窗口和保护窗口存在重叠:
保护上边界纵坐标小于实时下边界纵坐标;
和/或,保护下边界纵坐标大于实时上边界纵坐标;
和/或,保护左边界横坐标大于实时右边界横坐标;
和/或,保护右边界横坐标小于实时左边界横坐标。
4.根据权利要求2所述的一种窗口对象的监测和处理方法,其特征在于,判断实时窗口和保护窗口是否存在重叠前,还包括:
判断实时窗口是否为可视窗口;
当实时窗口为可视窗口时,判断实时窗口和保护窗口是否存在重叠;
其中,判断实时窗口是否为可视窗口,包括:
获取实时窗口的实时显示区域;
当实时显示区域不为空时,判断实时窗口为可视窗口。
5.根据权利要求1所述的一种窗口对象的监测和处理方法,其特征在于,通过主动测试判断保护窗口是否处于可操控状态,包括:
确定监测白名单;
创建测试窗口,其中,测试窗口为在监测白名单的应用窗口;
将测试窗口覆盖在保护窗口上方;
当光标移动到测试窗口区域时,光标所在位置产生空缺区域,保护窗口在空缺区域内不再被覆盖;
通过在空缺区域点击光标,以尝试改变保护窗口的前置属性;
获取保护窗口的目标前置属性,当目标前置属性满足预设前置条件时,判断保护窗口处于可操控状态。
6.根据权利要求5所述的一种窗口对象的监测和处理方法,其特征在于,确定影响保护窗口的第二目标窗口,包括:
确定点击光标产生的光标运行信息;
根据光标运行信息,确定第二目标窗口。
7.根据权利要求1所述的一种窗口对象的监测和处理方法,其特征在于,确定保护窗口后,还包括:
判断是否存在启动窗口;
当存在启动窗口时,对启动窗口进行自动处理。
8.根据权利要求1所述的一种窗口对象的监测和处理方法,其特征在于,自动处理的方法包括:
对待处理窗口执行关闭操作;
关闭操作成功时,返回第一成功提示信息,自动处理结束;
关闭操作失败时,返回第一失败提示信息;
接收到第一失败提示信息时,对待处理窗口执行最小化操作;
最小化操作成功后,返回第二成功提示信息,自动处理结束。
9.根据权利要求8所述的一种窗口对象的监测和处理方法,其特征在于,对待处理窗口执行关闭操作,包括:
获取待处理窗口的待处理句柄信息;
根据待处理句柄信息,获取待处理窗口的元素节点信息树;
遍历元素节点信息树,确定目标元素节点;
根据目标元素节点,确定第一目标区域;
对第一目标区域执行预设操作,自动处理结束。
10.根据权利要求7或8或9所述的一种窗口对象的监测和处理方法,其特征在于,还包括:
确定监测白名单;
执行自动处理之前,判断监测白名单是否包括待处理窗口;
当监测白名单不包括待处理窗口时,对待处理窗口进行自动处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310388159.4A CN116107845B (zh) | 2023-04-12 | 2023-04-12 | 一种窗口对象的监测和处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310388159.4A CN116107845B (zh) | 2023-04-12 | 2023-04-12 | 一种窗口对象的监测和处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116107845A true CN116107845A (zh) | 2023-05-12 |
CN116107845B CN116107845B (zh) | 2023-07-14 |
Family
ID=86264097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310388159.4A Active CN116107845B (zh) | 2023-04-12 | 2023-04-12 | 一种窗口对象的监测和处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116107845B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1655664A2 (en) * | 2004-10-06 | 2006-05-10 | IBM Corporation | System and method for managing a floating window |
CN103197842A (zh) * | 2013-04-15 | 2013-07-10 | 广州博冠信息科技有限公司 | 一种应用程序窗口的控制方法及装置 |
CN103475850A (zh) * | 2013-08-14 | 2013-12-25 | 深圳市华视瑞通信息技术有限公司 | 共享应用程序之窗口遮挡识别方法 |
US20150121301A1 (en) * | 2013-10-28 | 2015-04-30 | Lenovo (Beijing) Co., Ltd. | Information processing method and electronic device |
CN111176506A (zh) * | 2019-12-25 | 2020-05-19 | 华为技术有限公司 | 一种屏幕显示方法及电子设备 |
CN111382396A (zh) * | 2018-12-29 | 2020-07-07 | 北京奇虎科技有限公司 | 一种主页保护方法及装置 |
CN111597000A (zh) * | 2020-05-14 | 2020-08-28 | 青岛海信移动通信技术股份有限公司 | 一种小窗口管理方法及终端 |
CN112559110A (zh) * | 2021-02-22 | 2021-03-26 | 全时云商务服务股份有限公司 | 一种基于windows系统的放大镜穿透窗口的方法 |
CN113486413A (zh) * | 2021-07-23 | 2021-10-08 | 统信软件技术有限公司 | 一种防截屏处理方法、计算设备及可读存储介质 |
CN114138157A (zh) * | 2021-11-30 | 2022-03-04 | 联想(北京)有限公司 | 显示控制方法、装置及电子设备 |
-
2023
- 2023-04-12 CN CN202310388159.4A patent/CN116107845B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1655664A2 (en) * | 2004-10-06 | 2006-05-10 | IBM Corporation | System and method for managing a floating window |
CN103197842A (zh) * | 2013-04-15 | 2013-07-10 | 广州博冠信息科技有限公司 | 一种应用程序窗口的控制方法及装置 |
CN103475850A (zh) * | 2013-08-14 | 2013-12-25 | 深圳市华视瑞通信息技术有限公司 | 共享应用程序之窗口遮挡识别方法 |
US20150121301A1 (en) * | 2013-10-28 | 2015-04-30 | Lenovo (Beijing) Co., Ltd. | Information processing method and electronic device |
CN111382396A (zh) * | 2018-12-29 | 2020-07-07 | 北京奇虎科技有限公司 | 一种主页保护方法及装置 |
CN111176506A (zh) * | 2019-12-25 | 2020-05-19 | 华为技术有限公司 | 一种屏幕显示方法及电子设备 |
CN111597000A (zh) * | 2020-05-14 | 2020-08-28 | 青岛海信移动通信技术股份有限公司 | 一种小窗口管理方法及终端 |
CN112559110A (zh) * | 2021-02-22 | 2021-03-26 | 全时云商务服务股份有限公司 | 一种基于windows系统的放大镜穿透窗口的方法 |
CN113486413A (zh) * | 2021-07-23 | 2021-10-08 | 统信软件技术有限公司 | 一种防截屏处理方法、计算设备及可读存储介质 |
CN114138157A (zh) * | 2021-11-30 | 2022-03-04 | 联想(北京)有限公司 | 显示控制方法、装置及电子设备 |
Non-Patent Citations (1)
Title |
---|
张虎;黄海于;: "基于分布式环境的子进程监控软件设计与实现", 微型机与应用, no. 07 * |
Also Published As
Publication number | Publication date |
---|---|
CN116107845B (zh) | 2023-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0249399B1 (en) | Multiwindow control method and apparatus for work station having multiwindow function | |
US5179655A (en) | Multiwindow control method and apparatus for work station having multiwindow function | |
EP1203350A1 (en) | User interface for automated optical inspection systems | |
US20070300209A1 (en) | Run into function | |
US5027291A (en) | Application exit for potentially pickable primitives in a graphics system | |
CN116107845B (zh) | 一种窗口对象的监测和处理方法 | |
CN112083922A (zh) | 可视化编程方法、装置、设备及存储介质 | |
CN110941388A (zh) | 任务执行过程中的界面控制方法、装置、终端和存储介质 | |
CN113743066A (zh) | 一种基于rpa机器人的电商平台商品备注方法 | |
KR20000018932A (ko) | 게임 개발 시스템 및 그 방법 | |
CN111190674B (zh) | 统一处理触摸穿透方法、装置、存储介质及一体机设备 | |
WO2005031537A2 (en) | Methods for recursive spacing and touch transparency of onscreen objects | |
CN113903107B (zh) | 机器人的门锁控制方法、装置、机器人和存储介质 | |
JPH04201081A (ja) | ロボット制御装置 | |
US5065332A (en) | Figure element revising method | |
CN114816202B (zh) | tab组件里的图表跨界交互方法、装置、设备及介质 | |
CN111045775B (zh) | 一种在大屏可视化系统中高效集成第三方应用程序的方法 | |
CN115048008B (zh) | 一种hmi画面中对象的可视化方法和设备 | |
CN113842636A (zh) | 一种游戏操作引导完成方法、系统及设备 | |
US20040049622A1 (en) | Programming tool | |
CN118501154A (zh) | 一种判定布料是否可被裁剪的方法、系统及电子设备 | |
CN117473923A (zh) | 一种基于Allegro软件导出单个封装零件的方法和装置 | |
JPH01270109A (ja) | Ncプログラムのチェック方式 | |
WO2020057417A1 (zh) | 货道配置方法、自动售货机、移动终端、系统、电子设备及存储介质 | |
CN110287051A (zh) | 基于windows异常处理机制的主动防护方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |