CN113495651A - 一种窗口控制方法和装置 - Google Patents
一种窗口控制方法和装置 Download PDFInfo
- Publication number
- CN113495651A CN113495651A CN202010201559.6A CN202010201559A CN113495651A CN 113495651 A CN113495651 A CN 113495651A CN 202010201559 A CN202010201559 A CN 202010201559A CN 113495651 A CN113495651 A CN 113495651A
- Authority
- CN
- China
- Prior art keywords
- window
- parameter
- title text
- text
- handle
- 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
- 238000000034 method Methods 0.000 title claims abstract description 72
- 230000008569 process Effects 0.000 claims description 21
- 238000004458 analytical method Methods 0.000 claims description 15
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 8
- 230000002441 reversible effect Effects 0.000 abstract description 7
- 230000006870 function Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种窗口控制方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:获取传入的配置参数,解析所述配置参数得到第一参数和第二参数;其中,所述第一参数为基准标题文本,第二参数用于指示隐藏窗口或者显示窗口;枚举桌面上的窗口,以获取枚举到的窗口对应的窗口标题文本,将所述窗口标题文本与所述基准标题文本进行匹配;在所述窗口标题文本与所述基准标题文本匹配成功的情况下,按照所述第二参数的指示,隐藏或者显示对应的窗口。该实施方式能够自动隐藏和显示桌面上的窗口,且窗口的隐藏和显示是可逆的,适用性、灵活性好。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种窗口控制方法和装置。
背景技术
测试服务器上一般会存在多个用户进程,且这些用户进程是以窗口方式运行的。由于测试服务器的公用性,测试人员在操作时需要人工识别不同窗口,特别是命令行窗口,不仅需要一定的时间,而且容易识别错误,导致测试人员经常会误关其它窗口,后续测试进程或正在运行的其它测试进程将不能工作。
为了解决上述问题,现有技术中通过以下几种方式实现窗口隐藏:第一种是应用程序本身提供的一种启动方式,该方式在启动程序时实现隐藏窗口;第二种利用类似start命令/B的方式,隐藏后面待启动的进程窗口;第三种类似&的以后台进程的方式启动,返回命令行提示符。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
第一种方式受应用程序的影响,只能支持部分程序实现隐藏窗口;第二种方式虽然可以隐藏后续子进程的窗口,但start命令仍需要一个命令行窗口来显示,如果该命令行窗口被关闭,后续子进程窗口仍会被关闭,无法达到隐藏窗口的目的;第三种方式只对纯命令行方式运行的进程有效,如果被运行进程以图形界面窗口方式运行,仍会启动相应窗口,无法达到隐藏窗口的目的;另外,现有的方式均不能还原已隐藏的窗口,无法满足实际需求。
发明内容
有鉴于此,本发明实施例提供一种窗口控制方法和装置,能够自动隐藏和显示桌面上的窗口,窗口的隐藏和显示是可逆的,适用性、灵活性好,且被隐藏的窗口对应的进程仍可以正常运行。
为实现上述目的,根据本发明实施例的一个方面,提供了一种窗口控制方法。
本发明实施例的一种窗口控制方法,包括:获取传入的配置参数,解析所述配置参数得到第一参数和第二参数;其中,所述第一参数为基准标题文本,第二参数用于指示隐藏窗口或者显示窗口;枚举桌面上的窗口,以获取枚举到的窗口对应的窗口标题文本,将所述窗口标题文本与所述基准标题文本进行匹配;在所述窗口标题文本与所述基准标题文本匹配成功的情况下,按照所述第二参数的指示,隐藏或者显示对应的窗口。
可选地,枚举桌面上的窗口的步骤之前,所述方法还包括:初始化用于保存句柄的存储对象;枚举桌面上的窗口的过程中,所述方法还包括:将枚举到的窗口的句柄追加到所述存储对象中;枚举桌面上的窗口的步骤之后,所述方法还包括:遍历所述存储对象中的句柄;获取枚举到的窗口对应的窗口标题文本,包括:获取遍历到的句柄所对应窗口的窗口标题文本。
可选地,将所述窗口标题文本与所述基准标题文本进行匹配,包括:根据系统的代码页,将遍历到的当前句柄所对应窗口的窗口标题文本进行格式转换,得到目标格式字符串;将所述目标格式字符串与所述基准标题文本进行字符串匹配。
可选地,按照所述第二参数的指示,隐藏或者显示对应的窗口,包括:如果所述第二参数指示隐藏窗口,则通过设置ShowWindow函数的参数,隐藏所述当前句柄对应的窗口;如果所述第二参数指示显示窗口,则通过设置ShowWindow函数的参数,显示所述当前句柄对应的窗口。
可选地,将所述窗口标题文本与所述基准标题文本进行匹配的步骤之前,所述方法还包括:计算遍历到的当前句柄所对应窗口的窗口标题文本长度,以判断所述窗口标题文本长度是否满足设定的约束条件;将所述窗口标题文本与所述基准标题文本进行匹配,包括:在所述窗口标题文本长度满足所述约束条件的情况下,将所述窗口标题文本与所述基准标题文本进行匹配。
可选地,按照所述第二参数的指示,隐藏或者显示对应的窗口的步骤之前,所述方法还包括:根据所述配置参数的解析结果,判断所述第二参数是否存在;在所述解析结果中不存在所述第二参数的情况下,输出所述窗口的窗口标题文本;按照所述第二参数的指示,隐藏或者显示对应的窗口,包括:在所述解析结果中存在所述第二参数的情况下,按照所述第二参数的指示,隐藏或者显示对应的窗口。
为实现上述目的,根据本发明实施例的另一方面,提供了一种窗口控制装置。
本发明实施例的一种窗口控制装置,包括:参数解析模块,用于获取传入的配置参数,解析所述配置参数得到第一参数和第二参数;其中,所述第一参数为基准标题文本,第二参数用于指示隐藏窗口或者显示窗口;文本匹配模块,用于枚举桌面上的窗口,以获取枚举到的窗口对应的窗口标题文本,将所述窗口标题文本与所述基准标题文本进行匹配;窗口控制模块,用于在所述窗口标题文本与所述基准标题文本匹配成功的情况下,按照所述第二参数的指示,隐藏或者显示对应的窗口。
可选地,所述装置还包括:初始化模块,用于在枚举桌面上的窗口之前,初始化用于保存句柄的存储对象;追加模块,用于在枚举桌面上的窗口的过程中,将枚举到的窗口的句柄追加到所述存储对象中;遍历模块,用于在枚举桌面上的窗口之后,遍历所述存储对象中的句柄;所述文本匹配模块,还用于获取遍历到的句柄所对应窗口的窗口标题文本。
可选地,所述文本匹配模块,还用于:根据系统的代码页,将遍历到的当前句柄所对应窗口的窗口标题文本进行格式转换,得到目标格式字符串;将所述目标格式字符串与所述基准标题文本进行字符串匹配。
可选地,所述窗口控制模块,还用于:如果所述第二参数指示隐藏窗口,则通过设置ShowWindow函数的参数,隐藏所述当前句柄对应的窗口;如果所述第二参数指示显示窗口,则通过设置ShowWindow函数的参数,显示所述当前句柄对应的窗口。
可选地,所述装置还包括:第一判断模块,用于在将所述窗口标题文本与所述基准标题文本进行匹配之前,计算遍历到的当前句柄所对应窗口的窗口标题文本长度,以判断所述窗口标题文本长度是否满足设定的约束条件;所述文本匹配模块,还用于:在所述窗口标题文本长度满足所述约束条件的情况下,将所述窗口标题文本与所述基准标题文本进行匹配。
可选地,所述装置还包括:第二判断模块,用于在按照所述第二参数的指示,隐藏或者显示对应的窗口之前,根据所述配置参数的解析结果,判断所述第二参数是否存在;以及在所述解析结果中不存在所述第二参数的情况下,输出所述窗口的窗口标题文本;所述窗口控制模块,还用于:在所述解析结果中存在所述第二参数的情况下,按照所述第二参数的指示,隐藏或者显示对应的窗口。
上述发明中的一个实施例具有如下优点或有益效果:通过从配置参数中获取第一参数和第二参数,之后将窗口的窗口标题文本与第一参数进行匹配,进而按照第二参数的指示对匹配成功的窗口进行隐藏或者显示操作,能够自动隐藏和显示桌面上的窗口,且窗口的隐藏和显示是可逆的,适用性、灵活性好;将句柄作为窗口的唯一标识进行保存,保证后续枚举窗口时不会遗漏,且不会重复。
上述发明中的一个实施例具有如下优点或有益效果:将窗口标题文本进行格式转换,保证计算机能够识别,以便后续进行字符串匹配;根据第二参数的指示,设置ShowWindow函数的参数,达到灵活隐藏、显示窗口的目的;在字符串匹配之前,判定窗口标题文本是否满足约束条件,减少无效匹配,提高执行效率;使用线性表存储句柄,可以动态扩展线性表大小,存储效率高,易用性好;将第二参数设置为可选参数,以在第二参数为空时,能够保持当前状态,不对窗口进行隐藏或者显示操作,进一步满足用户需求。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例一的窗口控制方法的主要流程的示意图;
图2是根据本发明实施例二的窗口控制方法的主要步骤的示意图;
图3是根据本发明实施例三的窗口控制方法的主要步骤的示意图;
图4是根据本发明实施例的窗口控制装置的主要模块的示意图;
图5是本发明实施例可以应用于其中的示例性系统架构图;
图6是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
下面对本发明实施例涉及到的技术术语进行解释。
窗口:是用户界面中最重要的部分。它是屏幕上与一个应用程序相对应的矩形区域,包括框架和客户区,是用户与产生该窗口的应用程序之间的可视界面。每当用户开始运行一个应用程序时,应用程序就创建并显示一个窗口;当用户操作窗口中的对象时,程序会作出相应反应。用户通过关闭一个窗口来终止一个程序的运行;通过选择相应的应用程序窗口来选择相应的应用程序。
命令行窗口:是命令行界面在图形用户界面中呈现的一种窗口。
命令行界面:Command-Line Interface,缩写为CLI,是在图形用户界面得到普及之前使用最为广泛的用户界面,通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也称之为字符用户界面(character user interface,CUI)。
句柄:handle,是整个Windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息。句柄是Windows用来标志应用程序中建立的或是使用的唯一整数,Windows大量使用了句柄来标识对象。
线性表:是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。
图1是根据本发明实施例一的窗口控制方法的主要流程的示意图。如图1所示,本发明实施例一的窗口控制方法,主要包括以下步骤:
步骤S101:获取传入的配置参数,解析所述配置参数得到第一参数和第二参数。用户可以在命令行窗口中的命令提示符下输入命令行参数,该命令行参数包括可执行文件名称和配置参数,以启动可执行文件名称对应的可执行程序,并将配置参数传入该可执行程序。其中,可执行程序用于执行步骤S101-步骤103的处理过程。配置参数包括第一参数和第二参数,第一参数为基准标题文本;第二参数为可选参数,用于指示隐藏窗口或者显示窗口,即表示隐藏或显示窗口的操作状态。
步骤S102:枚举桌面上的窗口,以获取枚举到的窗口对应的窗口标题文本,将所述窗口标题文本与所述基准标题文本进行匹配。枚举桌面上的所有窗口,对于每个枚举到的窗口进行如下处理:获取该窗口对应的窗口标题文本,将该窗口标题文本与基准标题文本进行字符串匹配。该步骤用于判断窗口标题文本中是否包含基准标题文本,以找出所有包含基准标题文本的窗口标题文本。
步骤S103:在所述窗口标题文本与所述基准标题文本匹配成功的情况下,按照所述第二参数的指示,隐藏或者显示对应的窗口。如果窗口标题文本与基准标题文本匹配成功,则说明该窗口标题文本对应的窗口是需要进行隐藏或者显示操作的窗口。判断第二参数指示隐藏窗口还是显示窗口,如果指示隐藏窗口,则将找出的所有匹配成功的窗口标题文本所对应的窗口进行隐藏操作;如果指示显示窗口,则将找出的所有匹配成功的窗口标题文本所对应的窗口进行显示操作。
如背景技术的描述,现有技术中用于隐藏窗口的方式在实际使用时存在诸多限制,且均不能还原已隐藏的窗口,无法满足实际需求。比如在需要查看控制台上的日志窗口中的错误提示等情况下,就需要重新还原已隐藏的窗口。上述实施例通过从配置参数中获取第一参数和第二参数,之后将窗口的窗口标题文本与第一参数进行匹配,进而按照第二参数的指示对匹配成功的窗口进行隐藏或者显示操作,达到了隐藏和还原窗口的目的。
图2是根据本发明实施例二的窗口控制方法的主要步骤的示意图。如图2所示,本发明实施例二的窗口控制方法,由预先编写的可执行程序实现,该可执行程序可以通过在命令提示符下输入命令行参数来启动,并将配置参数传入该可执行程序,以使该可执行程序能够执行如下步骤:
步骤S201:获取传入的配置参数,解析配置参数得到第一参数和第二参数。为了方便后续从配置参数中正确解析出第一参数和第二参数,实施例中,用户在命令提示符下输入命令行参数时,可以依次输入可执行文件名称、第一参数和第二参数,并使用一些字符将可执行文件名称、第一参数和第二参数之间分开。
在一优选的实施例中,这些字符可以为空格、逗号、分号等。第一参数和第二参数的取值可以自定义设置。比如用户输入的命令行参数可以为:可执行文件名.exe".*slave\\.jar.*"hide。
将配置参数传入可执行文件名称对应的可执行程序后,解析上述配置参数,即可得到第一参数(即基准标题文本),并可根据解析结果判断第二参数是否存在,如果第二参数存在,则判断第二参数指示隐藏窗口还是显示窗口,以便于后续根据指示结果进行不同操作;如果第二参数不存在,则后续可以输出该窗口的窗口标题文本。
在解析配置参数之前,需要预先设置解析规则,比如参数之间使用空格进行分隔;对于用“”包含起来的参数,即使中间存在空格,仍旧解析为一个参数;不限定参数长度等。后续按照解析规则进行解析即可。上例中,经解析可以得到第一参数为.*slave\\.jar.*正则表达式,用于匹配含有slave.jar的窗口标题文本,且由于第一参数中包括特殊字符,故用双引号作为定界符;第二参数为hide字符串,表示隐藏窗口。
步骤S202:初始化用于保存句柄的存储对象,枚举桌面上的窗口,以将枚举到的窗口的句柄追加到该存储对象中。该步骤中的存储对象用于保存句柄,可以用线性表、数组等数据结构实现。以线性表为例,其为泛化类型,初始化的线性表即vector<句柄类型>,vector是一个类似于数组形式的线性表,句柄类型一般是正整数。
由于不能事先获知句柄数,如果使用数组等其它连续长度的存储对象来保存句柄,需要指定一个初始化长度,当长度不足时,还需要再新申请一个新的较大的连续长度内存,并将原数据复制到新区域中,存储效率较低,且增加了工作量。而使用线性表来保存句柄,在查找句柄时可以动态扩展线性表的大小,而且vector线性表是编译器自带的一个泛型容器,具有较高的存储效率与易用性。因此,在一优选的实施例中,可以使用线性表来保存所有的句柄。
在初始化线性表后,枚举桌面上所有的窗口,每当枚举到一个窗口,则调用回调函数,以将该窗口的句柄追加到线性表中。直至桌面上的所有窗口枚举完成后结束该追加过程。实施例中,使用EnumWindows函数枚举桌面的窗口,该函数枚举出的窗口包含隐藏的窗口,回调函数即用于将窗口的句柄追加线性表中。该步骤的伪代码可以如下:
vector<HWND>vec;//定义线性表
EnumWindows(EnumProc,(LPARAM)&vec);//EnumWindows的第二个参数即为回调函数,用于找到一个值写入到vec中。
在一优选的实施例中,为了实现对命令行窗口进行显示或隐藏操作,由于命令行窗口只有一个顶层窗口,没有其它的常规窗口,故可以仅枚举桌面上所有的顶层窗口,每找到一个顶层窗口,调用回调函数,将顶层窗口的句柄追加线性表中。其中,顶层窗口是一个应用最上层的窗口,也就是应用启动后第一个创建的主窗口;常规窗口是在顶层窗口基础上创建的子窗口。
步骤S203:遍历存储对象中的句柄,获取遍历到的当前句柄所对应窗口的窗口标题文本,将该窗口标题文本与第一参数进行匹配。每次从存储对象中不重复的选取一个句柄作为当前句柄,之后按照步骤S204-步骤S205进行循环处理。实施例中,可以从存储对象中任意、不重复的选取当前句柄。
在一优选的实施例中,为了保证计算机能够识别,需要根据系统的代码页,将获取到的窗口标题文本进行格式转换,得到目标格式字符串,之后再将目标格式字符串与第一参数进行字符串匹配。其中,代码页是字符集编码的别名,也称为内码表。实施例中,可以利用WideCharToMultiByte的系统应用程序接口(Application Programming Interface,API)将字符串数组转换为标准的string字符串(即目标格式字符串)。
假设字符串数组为“管理员:命令行提示符java-jar slave.jar-jnlpUrlhttp://192.168.183.93:8903/computer/192.168.166.236/slave-agent.jnlp-secret6087548e3d6d063250e24e03590a5109f3ade6c0242a239fa9a685fb0e20a346”,代码页为Windows ANSI(CP_ACP),则格式转换对应的伪代码可以如下:
格式转换完成后,将得到的目标格式字符串与第一参数进行匹配,以判断目标格式字符串中是否包括第一参数。匹配方式可以是正则表达式的匹配,例如,第一参数为slave.jar,判断目标格式字符串中是否包括slave.jar,对应的正则表达式为.*slave\\.jar.*,如果有一个窗口标题文本为“管理员:C:\Windows\system32\cmd.exe-java-jarslave.jar-jnlpUrl http://192.168.183.93:8903/computer/192.168.166.215/slave-agent.jnlp-secret 1efb205fc7ab9e00868edfd8c24c4a355a83144c78619fa7a8e538d879c613bf”,则会匹配到当前句柄对应的窗口标题文本。
步骤S204:判断该窗口标题文本与第一参数是否匹配成功,如果匹配成功,则执行步骤S205;如果匹配失败,则执行步骤S206。如果匹配成功,说明定位到需要进行显示或者隐藏操作的窗口。
步骤S205:根据第二参数的指示,对当前句柄对应的窗口进行隐藏或者显示操作,执行步骤S206。如果第二参数为空,则可以输出当前句柄所对应窗口的窗口标题文本,以列出这些窗口的进程列表。
如果第二参数指示隐藏窗口,则可以通过当前句柄,来隐藏对应的窗口;如果第二参数指示显示窗口,则可以通过当前句柄,来显示对应的窗口。实施例中,可以利用ShowWindow的系统API实现隐藏、显示窗口的操作。例如,可以用ShowWindow(句柄,SW_HIDE)实现隐藏窗口;可以用ShowWindow(句柄,SW_SHOW)实现显示窗口。
步骤S206:判断存储对象中的句柄是否遍历结束,如果未遍历结束,则执行步骤S203;如果遍历结束,则结束本流程。如果未遍历结束,则从存储对象中选取下一句柄作为当前句柄,直至最后一个句柄。上述过程可以从存储对象中不重复地选取句柄,直至存储对象中的所有句柄被识别完毕,之后退出可执行程序,结束整个过程。
步骤S203中在获取到当前句柄所对应窗口的窗口标题文本后,直接将该窗口标题文本与第一参数进行匹配。该方式会对所有窗口标题文本进行匹配处理,但是有些窗口标题文本本身不符合设定要求,无需进行匹配处理,故可以先进行过滤,以减少匹配处理的数据数量,提高匹配效率。下面结合实施例三进行说明。
图3是根据本发明实施例三的窗口控制方法的主要步骤的示意图。如图3所示,本发明实施例三的窗口控制方法,在步骤S203的获取遍历到的当前句柄所对应窗口的窗口标题文本,与将该窗口标题文本与第一参数进行匹配之间增加了如下步骤:
步骤S301:计算当前句柄所对应窗口的窗口标题文本长度。该步骤即统计窗口标题文本中所包含字符的个数。
步骤S302:判断窗口标题文本长度是否满足设定约束条件,如果满足约束条件,则执行步骤S303;如果不满足约束条件,则执行步骤S206。约束条件用于对需要进行匹配的窗口进行限定,可以自定义设置,比如为窗口标题文本长度大于0,窗口标题文本长度大于6等。对于满足约束条件的,继续进行后续处理;对于不满足约束条件的,忽略此窗口。
实际应用中,命令行窗口的窗口标题文本不会为空,即长度不为0,例如对于中文系统而言,其至少会显示“命令行提示符”这6个汉字,故可以设置约束条件为窗口标题文本长度大于6。
步骤S303:根据窗口标题文本长度,初始化用于保存窗口标题文本的内存空间。为了保存窗口标题文本,需要初始化足够大的内存空间。实施例中,可以开辟窗口标题文本长度+1的内存空间,作为保存窗口标题文本的缓冲区。
例如窗口标题文本为“管理员:命令行提示符java-jar slave.jar-jnlp Urlhttp://192.168.183.93:8903/computer/192.168.166.236/slave-agent.jnl p-secret6087548e3d6d063250e24e03590a5109f3ade6c0242a239fa9a685fb0e20a346”,该字符串的长度为191个字符,且故可以开辟192个字符的缓冲区,最后一个字符为文本结束符。
步骤S304:以字符串数组的方式,将窗口标题文本保存至内存空间。字符串通常可以按字符串数组来存储和访问,故可以以字符串数组的方式保存窗口标题文本。字符串数组的每个字符都可以通过数组下标获取。
通过本发明实施例的窗口控制方法可以看出,通过从配置参数中获取第一参数和第二参数,之后将窗口的窗口标题文本与第一参数进行匹配,进而按照第二参数的指示对匹配成功的窗口进行隐藏或者显示操作,能够自动隐藏和显示桌面上的窗口,且窗口的隐藏和显示是可逆的,适用性、灵活性好;将窗口标题文本进行格式转换,保证计算机能够识别,以便后续进行字符串匹配;根据第二参数的指示,设置ShowWindow函数的参数,达到灵活隐藏、显示窗口的目的;被隐藏的窗口对应的进程仍可以正常运行,只是窗口不可见,不需要待启动应用提供额外的支持。
图4是根据本发明实施例的窗口控制装置的主要模块的示意图。如图4所示,本发明实施例的窗口控制装置,主要包括如下模块:
参数解析模块401,用于获取传入的配置参数,解析所述配置参数得到第一参数和第二参数。用户可以在命令行窗口中的命令提示符下输入命令行参数,该命令行参数包括可执行文件名称和配置参数,以启动可执行文件名称对应的可执行程序,并将配置参数传入该可执行程序。其中,可执行程序用于执行三个模块(401-403)的处理过程。配置参数包括第一参数和第二参数,第一参数为基准标题文本;第二参数为可选参数,用于指示隐藏窗口或者显示窗口,即表示隐藏或显示窗口的操作状态。
文本匹配模块402,用于枚举桌面上的窗口,以获取枚举到的窗口对应的窗口标题文本,将所述窗口标题文本与所述基准标题文本进行匹配。枚举桌面上的所有窗口,对于每个枚举到的窗口进行如下处理:获取该窗口对应的窗口标题文本,将该窗口标题文本与基准标题文本进行字符串匹配。该步骤用于判断窗口标题文本中是否包含基准标题文本,以找出所有包含基准标题文本的窗口标题文本。
窗口控制模块403,用于在所述窗口标题文本与所述基准标题文本匹配成功的情况下,按照所述第二参数的指示,隐藏或者显示对应的窗口。如果窗口标题文本与基准标题文本匹配成功,则说明该窗口标题文本对应的窗口是需要进行隐藏或者显示操作的窗口。判断第二参数指示隐藏窗口还是显示窗口,如果指示隐藏窗口,则将找出的所有匹配成功的窗口标题文本所对应的窗口进行隐藏操作;如果指示显示窗口,则将找出的所有匹配成功的窗口标题文本所对应的窗口进行显示操作。
从以上描述可以看出,通过从配置参数中获取第一参数和第二参数,之后将窗口的窗口标题文本与第一参数进行匹配,进而按照第二参数的指示对匹配成功的窗口进行隐藏或者显示操作,能够自动隐藏和显示桌面上的窗口,且窗口的隐藏和显示是可逆的,适用性、灵活性好。
图5示出了可以应用本发明实施例的窗口控制方法或窗口控制装置的示例性系统架构500。
如图5所示,系统架构500可以包括终端设备501、502、503,网络504和服务器505。网络504用以在终端设备501、502、503和服务器505之间提供通信链路的介质。网络504可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备501、502、503通过网络504与服务器505交互,以接收或发送消息等。终端设备501、502、503上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备501、502、503可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器505可以是提供各种服务的服务器,例如对用户利用终端设备501、502、503所传入的命令行参数进行处理的后台管理服务器。后台管理服务器可以对接收到的命令行参数进行解析、文本匹配等处理,并将处理结果(例如显示窗口、隐藏窗口)反馈给终端设备。
需要说明的是,本发明实施例所提供的窗口控制方法一般由服务器505执行,相应地,窗口控制装置一般设置于服务器505中。
应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图6,其示出了适于用来实现本发明实施例的终端设备的计算机系统600的结构示意图。图6示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括参数解析模块、文本匹配模块和窗口控制模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,参数解析模块还可以被描述为“获取传入的配置参数,解析所述配置参数得到第一参数和第二参数的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:获取传入的配置参数,解析所述配置参数得到第一参数和第二参数;其中,所述第一参数为基准标题文本,第二参数用于指示隐藏窗口或者显示窗口;枚举桌面上的窗口,以获取枚举到的窗口对应的窗口标题文本,将所述窗口标题文本与所述基准标题文本进行匹配;在所述窗口标题文本与所述基准标题文本匹配成功的情况下,按照所述第二参数的指示,隐藏或者显示对应的窗口。
根据本发明实施例的技术方案,通过从配置参数中获取第一参数和第二参数,之后将窗口的窗口标题文本与第一参数进行匹配,进而按照第二参数的指示对匹配成功的窗口进行隐藏或者显示操作,能够自动隐藏和显示桌面上的窗口,且窗口的隐藏和显示是可逆的,适用性、灵活性好。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种窗口控制方法,其特征在于,包括:
获取传入的配置参数,解析所述配置参数得到第一参数和第二参数;其中,所述第一参数为基准标题文本,第二参数用于指示隐藏窗口或者显示窗口;
枚举桌面上的窗口,以获取枚举到的窗口对应的窗口标题文本,将所述窗口标题文本与所述基准标题文本进行匹配;
在所述窗口标题文本与所述基准标题文本匹配成功的情况下,按照所述第二参数的指示,隐藏或者显示对应的窗口。
2.根据权利要求1所述的方法,其特征在于,枚举桌面上的窗口的步骤之前,所述方法还包括:初始化用于保存句柄的存储对象;
枚举桌面上的窗口的过程中,所述方法还包括:将枚举到的窗口的句柄追加到所述存储对象中;
枚举桌面上的窗口的步骤之后,所述方法还包括:遍历所述存储对象中的句柄;
获取枚举到的窗口对应的窗口标题文本,包括:获取遍历到的句柄所对应窗口的窗口标题文本。
3.根据权利要求2所述的方法,其特征在于,将所述窗口标题文本与所述基准标题文本进行匹配,包括:
根据系统的代码页,将遍历到的当前句柄所对应窗口的窗口标题文本进行格式转换,得到目标格式字符串;
将所述目标格式字符串与所述基准标题文本进行字符串匹配。
4.根据权利要求3所述的方法,其特征在于,按照所述第二参数的指示,隐藏或者显示对应的窗口,包括:
如果所述第二参数指示隐藏窗口,则通过设置ShowWindow函数的参数,隐藏所述当前句柄对应的窗口;
如果所述第二参数指示显示窗口,则通过设置ShowWindow函数的参数,显示所述当前句柄对应的窗口。
5.根据权利要求2所述的方法,其特征在于,将所述窗口标题文本与所述基准标题文本进行匹配的步骤之前,所述方法还包括:
计算遍历到的当前句柄所对应窗口的窗口标题文本长度,以判断所述窗口标题文本长度是否满足设定的约束条件;
将所述窗口标题文本与所述基准标题文本进行匹配,包括:
在所述窗口标题文本长度满足所述约束条件的情况下,将所述窗口标题文本与所述基准标题文本进行匹配。
6.根据权利要求1至5的任一项所述的方法,其特征在于,按照所述第二参数的指示,隐藏或者显示对应的窗口的步骤之前,所述方法还包括:
根据所述配置参数的解析结果,判断所述第二参数是否存在;
在所述解析结果中不存在所述第二参数的情况下,输出所述窗口的窗口标题文本;
按照所述第二参数的指示,隐藏或者显示对应的窗口,包括:
在所述解析结果中存在所述第二参数的情况下,按照所述第二参数的指示,隐藏或者显示对应的窗口。
7.一种窗口控制装置,其特征在于,包括:
参数解析模块,用于获取传入的配置参数,解析所述配置参数得到第一参数和第二参数;其中,所述第一参数为基准标题文本,第二参数用于指示隐藏窗口或者显示窗口;
文本匹配模块,用于枚举桌面上的窗口,以获取枚举到的窗口对应的窗口标题文本,将所述窗口标题文本与所述基准标题文本进行匹配;
窗口控制模块,用于在所述窗口标题文本与所述基准标题文本匹配成功的情况下,按照所述第二参数的指示,隐藏或者显示对应的窗口。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:初始化模块,用于在枚举桌面上的窗口之前,初始化用于保存句柄的存储对象;追加模块,用于在枚举桌面上的窗口的过程中,将枚举到的窗口的句柄追加到所述存储对象中;遍历模块,用于在枚举桌面上的窗口之后,遍历所述存储对象中的句柄;
所述文本匹配模块,还用于获取遍历到的句柄所对应窗口的窗口标题文本。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010201559.6A CN113495651B (zh) | 2020-03-20 | 2020-03-20 | 一种窗口控制方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010201559.6A CN113495651B (zh) | 2020-03-20 | 2020-03-20 | 一种窗口控制方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113495651A true CN113495651A (zh) | 2021-10-12 |
CN113495651B CN113495651B (zh) | 2024-05-21 |
Family
ID=77994108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010201559.6A Active CN113495651B (zh) | 2020-03-20 | 2020-03-20 | 一种窗口控制方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113495651B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115543152A (zh) * | 2022-11-16 | 2022-12-30 | 北京时代亿信科技股份有限公司 | 确定文件状态的方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030217287A1 (en) * | 2002-05-16 | 2003-11-20 | Ilya Kruglenko | Secure desktop environment for unsophisticated computer users |
CN101535973A (zh) * | 2005-02-22 | 2009-09-16 | 网讯公司 | 用于在协作对话期间动态共享显示器的一部分的方法和设备 |
CN102200912A (zh) * | 2011-06-17 | 2011-09-28 | 飞天诚信科技股份有限公司 | 一种提高用户操作易用性的方法及系统 |
CN105447348A (zh) * | 2015-11-13 | 2016-03-30 | 珠海市君天电子科技有限公司 | 一种显示窗口的隐藏方法、装置及用户终端 |
US20170083166A1 (en) * | 2015-09-18 | 2017-03-23 | Google Inc. | Management of inactive windows |
CN108519900A (zh) * | 2018-03-28 | 2018-09-11 | 新华三云计算技术有限公司 | 显示窗口控制方法、装置及服务器 |
CN109299608A (zh) * | 2018-10-24 | 2019-02-01 | 武汉斗鱼网络科技有限公司 | 一种基于隐藏窗口以检测进程实例个数的方法及相关装置 |
-
2020
- 2020-03-20 CN CN202010201559.6A patent/CN113495651B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030217287A1 (en) * | 2002-05-16 | 2003-11-20 | Ilya Kruglenko | Secure desktop environment for unsophisticated computer users |
CN101535973A (zh) * | 2005-02-22 | 2009-09-16 | 网讯公司 | 用于在协作对话期间动态共享显示器的一部分的方法和设备 |
CN102200912A (zh) * | 2011-06-17 | 2011-09-28 | 飞天诚信科技股份有限公司 | 一种提高用户操作易用性的方法及系统 |
US20170083166A1 (en) * | 2015-09-18 | 2017-03-23 | Google Inc. | Management of inactive windows |
CN105447348A (zh) * | 2015-11-13 | 2016-03-30 | 珠海市君天电子科技有限公司 | 一种显示窗口的隐藏方法、装置及用户终端 |
CN108519900A (zh) * | 2018-03-28 | 2018-09-11 | 新华三云计算技术有限公司 | 显示窗口控制方法、装置及服务器 |
CN109299608A (zh) * | 2018-10-24 | 2019-02-01 | 武汉斗鱼网络科技有限公司 | 一种基于隐藏窗口以检测进程实例个数的方法及相关装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115543152A (zh) * | 2022-11-16 | 2022-12-30 | 北京时代亿信科技股份有限公司 | 确定文件状态的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113495651B (zh) | 2024-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8972936B2 (en) | Version labeling in a version control system | |
US20150242306A1 (en) | System and method for creating change-resilient scripts | |
CN111026931B (zh) | 一种数据查询方法、装置、设备及介质 | |
CN113031946A (zh) | 一种渲染页面组件的方法和装置 | |
CN109582317B (zh) | 用于调试寄宿应用的方法和装置 | |
CN110780874B (zh) | 用于生成信息的方法和装置 | |
CN110659210A (zh) | 一种信息获取方法、装置、电子设备及存储介质 | |
CN113761871A (zh) | 富文本渲染方法、装置、电子设备以及存储介质 | |
CN113378091A (zh) | 一种可视化项目生成方法、装置、电子设备及存储介质 | |
CN107301220B (zh) | 数据驱动视图的方法、装置、设备及存储介质 | |
CN111124541B (zh) | 一种配置文件的生成方法、装置、设备及介质 | |
CN113495651B (zh) | 一种窗口控制方法和装置 | |
CN113342450A (zh) | 页面处理的方法、装置、电子设备及计算机可读介质 | |
CN107357481B (zh) | 消息展示方法及消息展示装置 | |
CN115454956A (zh) | 日志生成方法、装置、电子设备及存储介质 | |
CN113094086B (zh) | 组件集成方法、装置、计算机可读存储介质及电子设备 | |
CN113361286B (zh) | 信息提示方法和装置 | |
CN111596997B (zh) | Ui信息的请求方法、装置、终端和存储介质 | |
CN113011201A (zh) | 一种代码文件的处理方法和装置 | |
CN112925573B (zh) | 网页加载的方法、装置、设备和计算机可读介质 | |
CN113779018A (zh) | 一种数据处理方法和装置 | |
CN112947846B (zh) | 对象存储系统的批处理任务执行方法、装置及电子设备 | |
CN113835893B (zh) | 数据处理的方法、装置、设备、存储介质及程序产品 | |
CN116185412B (zh) | 数据管理方法及装置、电子设备、存储介质 | |
CN112445790B (zh) | 一种报表数据存储方法、装置、设备及介质 |
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 |