CN111752666B - 窗口显示方法、装置和终端 - Google Patents
窗口显示方法、装置和终端 Download PDFInfo
- Publication number
- CN111752666B CN111752666B CN202010613873.5A CN202010613873A CN111752666B CN 111752666 B CN111752666 B CN 111752666B CN 202010613873 A CN202010613873 A CN 202010613873A CN 111752666 B CN111752666 B CN 111752666B
- Authority
- CN
- China
- Prior art keywords
- window
- application program
- dynamic library
- control
- target function
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 230000006870 function Effects 0.000 claims abstract description 197
- 230000004044 response Effects 0.000 claims description 27
- 230000008569 process Effects 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 19
- 238000012546 transfer Methods 0.000 claims description 16
- 238000011161 development Methods 0.000 claims description 13
- 230000005540 biological transmission Effects 0.000 claims description 8
- 230000002093 peripheral effect Effects 0.000 description 10
- 230000001133 acceleration Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 2
- 239000000919 ceramic Substances 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
- Digital Computer Display Output (AREA)
Abstract
本公开提供了一种窗口显示方法、装置、终端和存储介质,涉及软件技术领域。方法包括:在动态库中创建第一应用程序的窗口的窗口控件,动态库中包括代码文件,代码文件用于实现第二应用程序的目标功能;响应于通过第一应用程序向动态库发送的操作指令,根据操作指令,通过动态库中的目标功能对应的代码文件,创建目标功能窗口;将目标功能窗口与窗口控件绑定;通过绑定的窗口控件将目标功能窗口中的目标内容显示在第一应用程序的窗口中。通过上述方案,实现了无需将第二应用程序的代码文件内容公开给第一应用程序开发商,就能将第二应用程序的显示内容显示在第一应用程序的显示窗口中,从而减小了代码泄露的风险,提高了安全性。
Description
技术领域
本公开涉及软件技术领域,特别涉及一种窗口显示方法、装置和终端。
背景技术
随着软件开发技术的发展,开发的应用程序的功能越来越丰富。通常一个应用程序不仅可以显示当前应用程序的内容,还可以显示其他应用程序的内容。例如,第一应用程序可以显示第二应用程序的视频数据。在第一应用程序上显示第二应用程序的视频数据时,需要在第一应用程序的显示界面上嵌入第二应用程序的视频播放窗口,在该视频播放窗口中显示该视频数据。
相关技术中,为了实现在第一应用程序的显示界面中嵌入第二应用程序的视频播放窗口,第二应用程序的开发商需要向第一应用程序的开发商提供第二应用程序相关代码内容,导致第二应用程序的代码内容泄露的风险较大,安全性较差。
发明内容
本公开提供了一种窗口显示方法、装置和终端,提高了应用程序代码的安全性。
一方面,提供了一种窗口显示方法,所述方法包括:
在动态库中创建第一应用程序的窗口的窗口控件,所述动态库中包括代码文件,所述代码文件用于实现第二应用程序的目标功能;
响应于通过所述第一应用程序向所述动态库发送的操作指令,根据所述操作指令,通过所述动态库中的所述目标功能对应的代码文件,创建目标功能窗口;
将所述目标功能窗口与所述窗口控件绑定;
通过绑定的所述窗口控件将所述目标功能窗口中的目标内容显示在所述第一应用程序的窗口中。
在一种可能的实现方式中,所述在动态库中创建第一应用程序的窗口的窗口控件,包括:
通过所述第一应用程序创建所述窗口;
确定所述窗口的窗口标识;
通过所述第一应用程序将所述窗口标识发送给所述动态库;
在所述动态库中,根据所述窗口标识创建所述窗口的窗口控件。
在另一种可能的实现方式中,所述在动态库中创建第一应用程序的窗口的窗口控件之前,所述方法还包括:
在运行所述第一应用程序的过程中,通过所述第一应用程序向所述动态库发送传递参数;
响应于所述传递参数为指定参数值,在所述第一应用程序中加载所述动态库。
在另一种可能的实现方式中,在所述通过绑定的所述窗口控件将所述目标功能窗口中的目标内容显示在所述第一应用程序的窗口中之前,所述方法还包括:
通过所述第一应用程序,向所述动态库发送所述目标功能对应的第一显示数据;
对所述第一显示数据进行解码,得到第二显示数据;
所述通过绑定的所述窗口控件将所述目标功能窗口中的目标内容显示在所述第一应用程序的窗口中,包括:
根据所述目标功能窗口确定所述目标功能;
在所述动态库中,根据所述目标功能,对所述第二显示数据进行数据处理,得到第三显示数据;
通过绑定的所述窗口控件将所述第三显示数据显示在所述第一应用程序的窗口中。
在另一种可能的实现方式中,所述在动态库中创建第一应用程序的窗口的窗口控件之后,所述方法还包括:
确定所述窗口控件的控件标识;
通过所述动态库将所述窗口控件的控件标识发送给第一应用程序;
所述通过所述第一应用程序,向所述动态库发送所述目标功能对应的第一显示数据,包括:
通过所述第一应用程序,向所述动态库中的所述控件标识对应的窗口控件发送所述目标功能对应的第一显示数据。
在另一种可能的实现方式中,所述方法还包括:
通过所述动态库接收对所述目标功能窗口的窗口操作指令,所述窗口操作指令用于指示对所述目标功能窗口进行操作;
根据绑定的所述窗口控件,将所述窗口操作指令对应的操作过程显示在所述第一应用程序的窗口中。
在另一种可能的实现方式中,所述动态库为通过图形界面开发框架Qt语言编写的,所述第一应用程序为通过高级程序设计语言C#、微软基础类库MFC或Qt中的任一种语言编写的;所述操作指令用于指示所述第一应用程序通过所述动态库加载第二应用程序的目标功能;
在所述第一应用程序为通过Qt语言编写的情况下,所述窗口标识包括:窗口句柄或用户接口对象的基类QWidget;
在所述窗口标识为窗口句柄的情况下,所述在动态库中创建第一应用程序的窗口的窗口控件,包括:通过所述动态库,调用Qt中的语句QWinWidget或QWindow::fromWinId生成所述窗口控件;
在所述窗口标识为QWidget的情况下,所述在动态库中创建第一应用程序的窗口的窗口控件,包括:通过所述动态库,调用Qt中的语句QWidget::setParent生成所述窗口控件。
另一方面,提供了一种窗口显示装置,所述装置包括:
第一创建模块,用于在动态库中创建第一应用程序的窗口的窗口控件,所述动态库中包括代码文件,所述代码文件用于实现第二应用程序的目标功能;
第二创建模块,用于响应于通过所述第一应用程序向所述动态库发送操作指令,根据所述操作指令,通过所述动态库中的所述目标功能对应的代码文件,创建目标功能窗口;
绑定模块,用于将所述目标功能窗口与所述窗口控件绑定;
显示模块,用于通过绑定的所述窗口控件将所述目标功能窗口中的目标内容显示在所述第一应用程序的窗口中。
在一种可能的实现方式中,所述第一创建模块包括:
第一创建单元,用于通过所述第一应用程序创建所述窗口;
第一确定单元,用于确定所述窗口的窗口标识;
第一发送单元,用于通过所述第一应用程序将所述窗口标识发送给所述动态库;
第二创建单元,用于在所述动态库中,根据所述窗口标识创建所述窗口的窗口控件。
在另一种可能的实现方式中,所述装置还包括:
第一发送模块,用于在运行所述第一应用程序的过程中,通过所述第一应用程序向所述动态库发送传递参数;
加载模块,用于响应于所述传递参数为指定参数值,在所述第一应用程序中加载所述动态库。
在另一种可能的实现方式中,所述装置还包括:
第二发送模块,用于通过所述第一应用程序,向所述动态库发送所述目标功能对应的第一显示数据;
数据解码模块,用于对所述第一显示数据进行解码,得到第二显示数据;
所述显示模块,用于根据所述目标功能窗口确定所述目标功能;在所述动态库中,根据所述目标功能,对所述第二显示数据进行数据处理,得到第三显示数据;通过绑定的所述窗口控件将所述第三显示数据显示在所述第一应用程序的窗口中。
在另一种可能的实现方式中,所述装置还包括:
确定模块,用于确定所述窗口控件的控件标识;
第三发送模块,用于通过所述动态库将所述窗口控件的控件标识发送给第一应用程序;
所述第二发送模块,用于通过所述第一应用程序,向所述动态库中的所述控件标识对应的窗口控件发送所述目标功能对应的第一显示数据。
在另一种可能的实现方式中,所述装置还包括:
接收模块,用于通过所述动态库接收对所述目标功能窗口的窗口操作指令,所述窗口操作指令用于指示对所述目标功能窗口进行操作;
所述显示模块,还用于根据绑定的所述窗口控件,将所述窗口操作指令对应的操作过程显示在所述第一应用程序的窗口中。
在另一种可能的实现方式中,所述动态库为通过图形界面开发框架Qt语言编写的,所述第一应用程序为通过高级程序设计语言C#、微软基础类库MFC或Qt中的任一种语言编写的;所述操作指令用于指示所述第一应用程序通过所述动态库加载第二应用程序的目标功能;
在所述第一应用程序为通过Qt语言编写的情况下,所述窗口标识包括:窗口句柄或用户接口对象的基类QWidget;
在所述窗口标识为窗口句柄的情况下,所述第一创建模块,用于通过所述动态库,调用Qt中的语句QWinWidget或QWindow::fromWinId生成所述窗口控件;
在所述窗口标识为QWidget的情况下,所述第一创建模块,用于通过所述动态库,调用Qt中的语句QWidget::setParent生成所述窗口控件。
另一方面,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以实现如本公开实施中所述的窗口显示方法。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现如本公开实施中所述的窗口显示方法。
另一方面,提供了一种计算机程序产品,所述计算机程序产品中存储至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现如本公开实施中所述的窗口显示方法。
本公开的实施例提供的技术方案可以包括以下有益效果:
在本公开实施例中,通过将实现第二应用程序的目标功能的代码文件添加在动态库中,在动态库中创建第一应用程序的窗口的窗口控件,响应于第一应用程序需要实现第二应用程序的目标功能,只需要将该窗口控件与第二应用程序的目标功能窗口绑定,从而第一应用程序就可以通过该窗口控件,调用动态库中的代码文件来实现目标功能。由于可以通过上述的窗口控件创建和绑定,使得第一应用程序实现第二应用程序的目标功能,因此,通过本方案,第二应用程序的开发商无需向第一应用程序的开发商公开实现目标功能的代码文件内容,减小了代码泄露的风险,提高了第二应用程序的安全性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并于说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种实施环境示意图;
图2是根据一示例性实施例示出的一种窗口显示方法流程图;
图3是根据一示例性实施例示出的一种窗口显示方法流程图;
图4是根据一示例性实施例示出的一种窗口显示方法流程图;
图5是根据一示例性实施例示出的一种窗口显示方法流程图;
图6是根据一示例性实施例示出的一种窗口显示装置框图;
图7是根据一示例性实施例示出的一种窗口显示装置框图;
图8是本公开实施例提供的一种终端的结构示意图;
图9是本公开实施例提供的一种终端的结构示意图。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种窗口显示方法的实施场景的示意图。参见图1,该实施场景包括终端中安装的第一应用程序,该第一应用程序中集成了动态库。该终端可以为手机、电脑、平板电脑或可穿戴设备等。其中,该终端中的操作系统可以为任一操作系统,例如,该终端中的操作系统可以为Windows(一种终端操作系统),相应的,该第一应用程序可以为操作系统中可运行的文件,例如,后缀为.exe(executable file,可执行文件)的文件等。
该动态库为操作系统中实现共享函数库概念的一种方式。该动态库为第二应用程序的开发商开发的动态库,该动态库中包括实现第二应用程序的目标功能的代码文件,该代码文件可以为实现功能所需的函数。该动态库可以为后缀为.dll(Dynamic LinkLibrary,动态链接库)的文件等。该动态库为Qt(一种跨平台C++图形用户界面应用程序开发框架)语言编写的。
其中,第一应用程序通过集成该动态库,实现将动态库中的目标功能集成在该第一应用程序中。第一应用程序在运行的过程中,通过调用动态库的代码文件,实现加载该动态库中的目标功能。第一应用程序和动态库之间可以通过动态库的外部接口进行数据交互。另外,该第一应用程序为通过C#(C sharp,一种高级程序设计语言)、MFC(MicrosoftFoundation Classes,微软基础类库)或Qt中的任一种语言编写的。
第二应用程序的开发商可以提供该动态库,响应于第一应用程序需要使用第二应用程序的目标功能,第一应用程序可以使用动态库中该第二应用程序的目标功能,且第二应用程序的开发商不用向第一应用程序的开发商提供任何该第二应用程序的相关代码,从而降低了第二应用程序代码泄露的风险,提高了安全性。
在本公开实施例中,通过将实现第二应用程序的目标功能的代码文件添加在动态库中,在动态库中创建第一应用程序的窗口的窗口控件,响应于第一应用程序需要实现第二应用程序的目标功能,只需要将该窗口控件与第二应用程序的目标功能窗口绑定,从而第一应用程序就可以通过该窗口控件,调用动态库中的代码文件来实现目标功能。由于可以通过上述的窗口控件创建和绑定,使得第一应用程序实现第二应用程序的目标功能,因此,通过本方案,第二应用程序的开发商无需向第一应用程序的开发商公开实现目标功能的代码文件内容,减小了代码泄露的风险,提高了第二应用程序的安全性。
图2是根据一示例性实施例示出的一种窗口显示方法流程图,如图2所示,该方法包括如下步骤。
步骤201:在动态库中创建第一应用程序的窗口的窗口控件,该动态库中包括代码文件,该代码文件用于实现第二应用程序的目标功能。
步骤202:响应于通过该第一应用程序向该动态库发送的操作指令,根据该操作指令,通过该动态库中的该目标功能对应的代码文件,创建目标功能窗口。
步骤203:将该目标功能窗口与该窗口控件绑定。
步骤204:通过绑定的该窗口控件将该目标功能窗口中的目标内容显示在该第一应用程序的窗口中。
在一种可能的实现方式中,该在动态库中创建第一应用程序的窗口的窗口控件,包括:
通过该第一应用程序创建该窗口;
确定该窗口的窗口标识;
通过该第一应用程序将该窗口标识发送给该动态库;
在该动态库中,根据该窗口标识创建该窗口的窗口控件。
在另一种可能的实现方式中,该在动态库中创建第一应用程序的窗口的窗口控件之前,该方法还包括:
在运行该第一应用程序的过程中,通过该第一应用程序向该动态库发送传递参数;
响应于该传递参数为指定参数值,在该第一应用程序中加载该动态库。
在另一种可能的实现方式中,在该通过绑定的该窗口控件将该目标功能窗口中的目标内容显示在该第一应用程序的窗口中之前,该方法还包括:
通过该第一应用程序,向该动态库发送该目标功能对应的第一显示数据;
对该第一显示数据进行解码,得到第二显示数据;
该通过绑定的该窗口控件将该目标功能窗口中的目标内容显示在该第一应用程序的窗口中,包括:
根据该目标功能窗口确定该目标功能;
在该动态库中,根据该目标功能,对该第二显示数据进行数据处理,得到第三显示数据;
通过绑定的该窗口控件将该第三显示数据显示在该第一应用程序的窗口中。
在另一种可能的实现方式中,该在动态库中创建第一应用程序的窗口的窗口控件之后,该方法还包括:
确定该窗口控件的控件标识;
通过该动态库将该窗口控件的控件标识发送给第一应用程序;
该通过该第一应用程序,向该动态库发送该目标功能对应的第一显示数据,包括:
通过该第一应用程序,向该动态库中的该控件标识对应的窗口控件发送该目标功能对应的第一显示数据。
在另一种可能的实现方式中,该方法还包括:
通过该动态库接收对该目标功能窗口的窗口操作指令,该窗口操作指令用于指示对该目标功能窗口进行操作;
根据绑定的该窗口空间,将该窗口操作指令对应的操作过程显示在该第一应用程序的窗口中。
在另一种可能的实现方式中,该动态库为通过图形界面开发框架Qt语言编写的,该第一应用程序为通过高级程序设计语言C#、微软基础类库MFC或Qt中的任一种语言编写的;该操作指令用于指示该第一应用程序通过该动态库加载第二应用程序的目标功能;
在该第一应用程序为通过Qt语言编写的情况下,该窗口标识包括:窗口句柄或用户接口对象的基类QWidget;
在该窗口标识为窗口句柄的情况下,该在动态库中创建第一应用程序的窗口的窗口控件,包括:通过该动态库,调用Qt中的语句QWinWidget或QWindow::fromWinId生成该窗口控件;
在该窗口标识为QWidget的情况下,该在动态库中创建第一应用程序的窗口的窗口控件,包括:通过该动态库,调用Qt中的语句QWidget::setParent生成该窗口控件。
在本公开实施例中,通过将实现第二应用程序的目标功能的代码文件添加在动态库中,在动态库中创建第一应用程序的窗口的窗口控件,响应于第一应用程序需要实现第二应用程序的目标功能,只需要将该窗口控件与第二应用程序的目标功能窗口绑定,从而第一应用程序就可以通过该窗口控件,调用动态库中的代码文件来实现目标功能。由于可以通过上述的窗口控件创建和绑定,使得第一应用程序实现第二应用程序的目标功能,因此,通过本方案,第二应用程序的开发商无需向第一应用程序的开发商公开实现目标功能的代码文件内容,减小了代码泄露的风险,提高了第二应用程序的安全性。
图3是根据一示例性实施例示出的一种窗口显示方法流程图,如图3所示,该方法包括如下步骤。
步骤301:终端通过该第一应用程序创建窗口。
在本步骤中,终端通过第一应用程序的窗口创建功能创建窗口。终端可以在第一应用程序启动时,就通过该第一应用程序创建窗口;终端也可以在接收到窗口创建指令时,生成该窗口。其中,该窗口创建指令可以为终端接收到的对第二应用程序的目标功能的加载指令触发的指令。另外,该窗口可以为第一应用程序创建的任一窗口。
参见图1和图4,终端中安装第一应用程序,通过第一应用程序和动态库之间进行信息交互。在本步骤之前,终端需要运行第一应用程序。在一种可能的实现方式中,终端的显示界面上显示第一应用程序的程序图标,响应于终端接收到对该程序图标的触发操作时,终端开始运行该第一应用程序,其中,该触发操作可以为对该程序图标的点击或长按等操作。在另一种可能的实现方式中,终端中存储第一应用程序的执行文件,响应于终端检测到终端存储路径中的第一应用程序的执行文件被触发,终端开始运行该第一应用程序。
步骤302:终端确定该窗口的窗口标识。
窗口标识可以为操作系统中的一个数据结构,每个窗口标识对应一个窗口,对窗口的操作均需要通过该窗口对应的窗口标识实现。该窗口标识可以为任一种标识,例如,在该第一应用程序为通过Qt语言编写的情况下,该窗口标识可以为窗口句柄或QWidget(一种用户接口对象的基类)等。
由于该窗口可以为第一应用程序创建的任一窗口,还可以为第一应用程序根据接收到的窗口创建指令创建的窗口。相应的,在本步骤中,终端可以获取本次存储的任一窗口的窗口标识,终端也可以在第一终端生成新的窗口时,获取该窗口的窗口标识。在本步骤中,终端确定第一应用程序的窗口的窗口标识,将该窗口标识存储在本地,或者,将该窗口标识确定为获取到的窗口标识。
步骤303:终端通过该第一应用程序将该窗口标识发送给该动态库。
继续参见图4,终端通过终端中的第一应用程序将窗口标识发送给动态库。终端可以通过动态库的外部接口实现与动态库进行数据交互。在本步骤中,终端也可以根据该动态库的外部接口将该窗口标识传递给动态库。相应的,终端通过该第一应用程序将该窗口标识发送给该动态库的步骤可以通过以下步骤(1)-(2)实现,包括:
(1)终端确定该动态库的外部接口。
终端获取动态库的文件属性信息,从该文件属性信息中提取动态库的外部接口的相关信息,根据该外部接口相关信息,确定该动态库的外部接口。需要说明的一点是,终端可以在加载该动态库时获取该动态库的外部接口,将该外部接口存储在本地,当终端需要使用该外部接口时,直接获取本地存储的外部接口。终端也可以在需要向动态库发送窗口标识时才确定该动态库的外部接口,在本公开实施例中,对此不作具体限定。
(2)终端通过该第一应用程序向该外部接口发送该窗口标识。
在本步骤中,终端通过第一应用程序将窗口标识发送到的动态库的外部接口,相应的,该动态库通过该外部接口接收第一应用程序发送的窗口标识。
在本实现方式中,仅需要调用动态库的外部接口,就可以实现窗口标识的传输,无需复杂的程序开发,只需要传入窗口标识调用外部接口,减少了开发量,降低了开发人员的工作量。
相应的,在本步骤之前,在运行该第一应用程序的过程中,终端在该第一应用程序中加载该动态库。其中,终端可以在启动第一应用程序时,开始加载该动态库;终端也可以在第一应用程序接收到对第二应用程序的目标功能的加载指令时,开始加载该动态库,在本公开实施例中,对此不作具体限定。
另外,终端可以只在第一次启动该动态库时加载该动态库,相应的,终端加载动态库时,通过第一应用程序向动态库发送传递参数,动态库通过该传递参数确定第一应用程序是否为第一次加载该动态库,响应于第一应用程序第一次加载该动态库,终端在该第一应用程序中加载动态库;响应于第一应用程序不是第一次加载该动态库,终端直接执行步骤305。该过程可以为:在运行该第一应用程序的过程中,终端通过该第一应用程序向该动态库发送传递参数;响应于该传递参数为指定参数值,在该第一应用程序中加载该动态库。
其中,第一应用程序程序加载该动态库时,需要调用动态库对应的代码文件中的主函数,例如,响应于动态库为.dll文件,第一应用程序加载该动态库时,会调用.dll文件中的DllMain函数,将传递参数DLL_PROCESS_ATTACH发送给该动态库,动态库根据DLL_PROCESS_ATTACH的值,确定终端第一应用程序是否为第一次加载该动态库。
响应于主应用程序第一次加载该动态库,终端可以在动态库中创建qApp(QApplication,一种指向当前实例的类)程序,完成加载。动态库通过该qApp程序可以实现接收鼠标、键盘等事件的响应,可以接收并使用Qt的事件循环。
需要说明的一点是,终端每次开启第一应用程序后,需要重新加载该动态库,也即,响应于接收到该第一应用程序的关闭指令,终端卸载该动态库。因此,当再次开启第一应用程序时,终端需要通过第一应用程序重新加载该动态库。
步骤304:终端在该动态库中,根据该窗口标识创建该窗口的窗口控件。
继续参见图4,终端通过终端中的动态库创建窗口控件。在本步骤中,该窗口控件用于实现进入或退出窗口的事件循环。例如,终端通过该窗口控件,实现窗口中显示内容与鼠标、键盘等被触发的关系。例如,该窗口控件可以为QWinWidget(Qt平台提供的一个类)。该窗口控件可以通过Qt(由QtComPany基于C++开发的图形界面开发框架)平台中的语句进行构建。
终端根据该窗口标识,在该动态库中创建该窗口的窗口控件的步骤可以通过一下步骤(1)-(2)实现,包括:
(1)终端将该窗口标识确定为控件参数。
在本步骤中,终端在动态库中将该窗口标识作为创建窗口控件的控件参数。
(2)终端在该动态库中,创建该控件参数对应的窗口控件。
以该窗口控件为通过Qt平台中的语句进行构建的为例,在该窗口标识为窗口句柄的情况下,本步骤可以为:通过该动态库,调用Qt中的语句QWinWidget或QWindow::fromWinId生成该窗口控件。
在该窗口标识为QWidget的情况下,本步骤可以为:通过该动态库,调用Qt中的语句QWidget::setParent生成该窗口控件。
另外,终端在通过动态库创建窗口控件的同时,还生成该窗口控件的控件标识,通过动态库将该控件标识发送给第一应用程序。该过程可以为:终端确定该窗口控件的控件标识;终端通过该动态库将该窗口控件的控件标识发送给该第一应用程序。其中,该控件标识用于标识该窗口控件为数据传输的对象。终端可以根据该控件标识向动态库中的窗口控件传输数据,相应的,动态库可以根据该控件标识确定该数据对应的窗口控件,从而根据该窗口控件对应的功能对该数据进行处理。该控件标识可以为Handle(句柄)。
动态库集成在第一应用程序中。需要说明的一点是,第一应用程序中可以集成多个动态库,每个动态库中可以包括多个第二应用程序的目标功能。在本公开实施例中,对此不作具体限定。
步骤305:响应于通过该第一应用程序向该动态库发送的操作指令,终端根据该操作指令,通过该动态库中的该目标功能对应的代码文件,创建目标功能窗口。
其中,该操作指令用于指示该第一应用程序通过该动态库加载第二应用程序的目标功能,该目标内容为该目标功能对应的显示窗口中显示的内容。继续参见图4,第一应用程序中触发操作指令,终端会通过第一应用程序向动态库发送操作指令,动态库接收到操作指令时,根据操作指令创建目标功能窗口。在本步骤中,终端确定第一应用程序需要加载的第二应用程序的目标功能,通过该动态库创建该目标功能对应的目标功能窗口。例如,当第一应用程序需要加载鱼眼视频播放功能时,终端通过该动态库创建鱼眼视频播放功能对应的功能窗口,相应的,该操作指令可以为播放指令。
该第二应用程序为可以实现目标功能的应用程序,该第二应用程序无需安装在终端中,终端可以通过动态库实现第二应用程序的目标功能。该目标功能窗口为可以实现该目标功能的虚拟窗口,只运行在动态库中。
其中,终端通过动态库的外部接口通过第一应用程序向动态库发送该操作指令的过程可以通过以下步骤(1)-(3)实现,包括:
(1)终端确定该动态库的外部接口。
本步骤与步骤303中的步骤(1)相似,在此不再赘述。
(2)终端通过该第一应用程序调用该外部接口。
本步骤与步骤303中的(2)相似,在此不再赘述。
(3)终端通过该外部接口向该动态库发送操作指令。
在本实现方式中,终端通过调用动态库的外部接口实现与动态库进行数据交互,简化了第一应用程序的开发量,并且,动态库无需向第一应用程序提供相关代码,防止了动态库对应的第二应用程序的代码被泄露,提高了安全性。
步骤306:终端将该目标功能窗口与该窗口控件绑定。
继续参见图4,响应于在第一应用程序中,接收到用于对第二应用程序的操作指令,终端确定第二应用程序对应的目标功能,将目标功能对应的功能窗口与该窗口控件绑定。终端通过动态库将目标功能窗口绑定窗口控件,从而实现将目标功能窗口绑定到第一应用程序中。在本步骤中,终端通过状态库将目标功能窗口作为窗口控件的子类,实现将目标功能窗口与窗口控件绑定。
步骤307:终端通过绑定的该窗口控件,将该目标功能窗口中的目标内容显示在该第一应用程序的窗口中。
在本步骤中,终端根据窗口控件对应的窗口标识,确定该窗口控件对应的第一应用程序的窗口,通过该窗口控件与目标功能窗口的绑定关系,实现将目标内容显示在该窗口中。
需要说明的一点是,终端可以通过第一应用程序创建多个窗口,不同的窗口用于显示不同的第二应用程序的目标功能对应的显示内容。在另一种可能的实现方式中,终端创建一个窗口,不同的第二应用程序的目标功能对应显示内容都可以显示在该窗口中,响应于窗口中显示多个第二应用程序的目标功能对应的显示内容,该多个第二应用程序的目标功能对应的显示内容在该第一应用程序的窗口中的位置和大小可以根据需要进行调整,在本公开实施例中,对此不作具体限定。
在本实现方式中,第一应用程序可以继承多种第二应用程序的目标功能,实现了通过一个应用程序继承多个目标功能窗口,简化了开发过程,降低了开发量。
另外,该第一应用程序的窗口中显示的目标内容为第二应用程序的目标功能对应的显示内容数据。在本公开实施例中,终端可以通过第一应用程序接收第一显示数据,将该第一数据传送给动态库,通过该动态库实现对该第一显示数据进行处理,直到接收到对该第一显示数据的操作指令,根据该操作指令,将对该第一显示数据处理后的数据显示在该第一应用程序的窗口中。该过程可以通过以下步骤(1)-(5)实现,包括:
(1)终端通过该第一应用程序,向该动态库发送该目标功能对应的第一显示数据。
其中,第一显示数据为可以由第二应用程序的目标功能进行数据处理,显示在第二应用程序的显示窗口的显示数据。例如,该第二应用程序的目标功能可以为鱼眼视频播放功能,相应的,该第一显示数据可以为鱼眼摄像机采集到的视频码流。
在本步骤中,终端通过第一应用程序,将第一显示数据发送给动态库中,第一应用程序对应的窗口控件。其中,终端可以根据窗口控件的控件标识,确定窗口控件。终端中第一应用程序和动态库之间可以通过控件标识进行数据传输,相应的,终端通过动态库生成窗口控件后,还可以将该窗口控件的控件标识发送给第一应用程序,相应的,第一应用程序可以根据该控件标识向动态库发送第一显示数据,该过程可以通过以下步骤(1-1)-(1-2)实现,包括:
(1-1)终端确定该窗口控件的控件标识。
参见图4和图5,终端生成窗口控件后,确定该窗口控件的控件标识。
(1-2)终端通过该动态库将该窗口控件的控件标识发送给该第一应用程序。
本步骤(1)可以为:终端通过该第一应用程序,向该动态库的该控件标识对应的窗口控件发送该目标功能对应的第一显示数据。
(2)终端对该第一显示数据进行解码,得到第二显示数据。
在本步骤中,终端通过动态库对第一显示数据进行解码,得到待显示的第二显示数据。其中,动态库可以通过窗口控件对第一显示数据进行解码。
需要说明的一点是,终端在采集到第一显示数据,通过动态库对该第一显示数据进行解码,得到第二显示数据后,可以不再对该第二显示数据进行显示,只将该第二显示数据存储在本地,响应于在该第一应用程序中接收到用于对第二应用程序的操作指令,才将该第二显示数据显示在窗口上。也即,步骤(1)-(2)可以在本步骤之前的任何一个步骤执行,在本公开实施例中,对步骤(1)-(2)的执行时机不作具体限定。
(3)终端根据该目标功能窗口确定目标功能。
在本步骤中,终端根据窗口控件绑定的目标功能窗口,确定当前第一应用程序加载的目标功能。
(4)终端在该动态库中,根据该目标功能,对该第二显示数据进行数据处理,得到第三显示数据。
继续参见图5,在本步骤中,终端根据控件标识对应的窗口控件,确定该第二显示数据对应的目标功能,根据该目标功能对第二显示数据进行数据处理,得到第三显示数据。例如,该第二应用程序的目标功能可以为鱼眼视频播放功能,该第一显示数据可以为鱼眼摄像机采集到的视频码流,第二显示数据为解码后的视频数据。在本步骤中,终端可以在动态库中对接收到的视频数据进行分析、比对、还原、矫正等处理,得到可以显示的鱼眼视频图像。
(5)终端通过绑定的该窗口控件,将该第三显示数据显示在该第一应用程序的窗口中。
其中,终端可以通过绑定的窗口控件的控件标识,将第三显示数据显示在第一应用程序的窗口中。该过程可以为:终端确定绑定的该窗口控件的控件标识;根据该窗口控件的控件标识,确定该窗口控件对应的窗口标识;根据该窗口标识将该第三显示数据显示在该控件标识对应的第一应用程序的窗口中。
终端可以根据窗口控件对应的窗口标识,确定该窗口控件对应的第一应用程序的窗口,实现将第三显示数据显示在该第一应用程序的窗口中。这里,窗口控件与目标功能窗口绑定后,对第二显示数据进行数据处理得到的第三显示数据即为目标功能窗口中的目标内容。
例如,该第三显示数据为解码后的鱼眼视频图像,在本步骤中,该操作指令可以为播放指令,终端根据在播放指令,在空白显示窗口中播放该鱼眼视频图像。
另外,该动态库为Qt语言编写的,该第一应用程序为通过C#、MFC或Qt中的任一种语言编写的。本公开实施例中,支持多种语言的动态库集成,解决了开发环境不同造成的集成问题。
另外,第一应用程序的显示界面中可以显示至少一个第二应用程序的功能按钮,响应于终端检测到功能按钮被触发,确定接收到对该功能按钮对应的第二应用程序的窗口操作指令。其中,终端可以在第一应用程序中通过动态库的外部接口向动态库发送该操作指令。相应的,终端通过该动态库接收对该目标功能窗口的窗口操作指令;根据绑定的该窗口控件,将该窗口操作指令对应的操作过程显示在该第一应用程序的窗口中。其中,所述窗口操作指令用于指示对该目标功能窗口进行操作。
例如,该窗口操作指令可以为窗口拖动指令、窗口缩放指令等。相应的,终端通过该窗口操作指令对第一应用程序的窗口中目标功能窗口对应的显示窗口进行拖动、缩放等操作。
在本公开实施例中,通过将实现第二应用程序的目标功能的代码文件添加在动态库中,在动态库中创建第一应用程序的窗口的窗口控件,响应于第一应用程序需要实现第二应用程序的目标功能,只需要将该窗口控件与第二应用程序的目标功能窗口绑定,从而第一应用程序就可以通过该窗口控件,调用动态库中的代码文件来实现目标功能。由于可以通过上述的窗口控件创建和绑定,使得第一应用程序实现第二应用程序的目标功能,因此,通过本方案,第二应用程序的开发商无需向第一应用程序的开发商公开实现目标功能的代码文件内容,减小了代码泄露的风险,提高了第二应用程序的安全性。
图6是根据一示例性实施例示出的一种窗口显示装置的框图。该装置包括:
第一创建模块601,用于在动态库中创建第一应用程序的窗口的窗口控件,该动态库中包括代码文件,该代码文件用于实现第二应用程序的目标功能;
第二创建模块602,用于响应于通过该第一应用程序向该动态库发送的操作指令,根据该操作指令,通过该动态库中的该目标功能对应的代码文件,创建目标功能窗口;
绑定模块603,用于将该目标功能窗口与该窗口控件绑定;
显示模块604,用于通过绑定的该窗口控件将该目标功能窗口中的目标内容显示在该第一应用程序的窗口中。
在一种可能的实现方式中,参见图7,该第一创建模块601包括:
第一创建单元6011,用于通过该第一应用程序创建该窗口;
第一确定单元6012,用于确定该窗口的窗口标识;
第一发送单元6013,用于通过该第一应用程序将该窗口标识发送给该动态库;
第二创建单元6014,用于在该动态库中,根据该窗口标识创建该窗口的窗口控件。
在另一种可能的实现方式中,参见图7,该装置还包括:
第一发送模块605,用于在运行该第一应用程序的过程中,通过该第一应用程序向该动态库发送传递参数;
加载模块606,用于响应于该传递参数为指定参数值,在该第一应用程序中加载该动态库。
在另一种可能的实现方式中,参见图7,该装置还包括:
第二发送模块607,用于通过该第一应用程序,向该动态库发送该目标功能对应的第一显示数据;
数据解码模块608,用于对该第一显示数据进行解码,得到第二显示数据;
该显示模块604,用于根据该目标功能窗口确定该目标功能;在该动态库中,根据该目标功能,对该第二显示数据进行数据处理,得到第三显示数据;通过绑定的该窗口控件将该第三显示数据显示在该第一应用程序的窗口中。
在另一种可能的实现方式中,该装置还包括:
确定模块609,用于确定该窗口控件的控件标识;
第三发送模块610,用于通过该动态库将该窗口控件的控件标识发送给第一应用程序;
该第二发送模块607,用于通过该第一应用程序,向该动态库中的该控件标识对应的窗口控件发送该目标功能对应的第一显示数据。
在另一种可能的实现方式中,该装置还包括:
接收模块611,用于通过该动态库接收对该目标功能窗口的窗口操作指令,该窗口操作指令用于指示对该目标功能窗口进行操作;
该显示模块604,还用于根据绑定的该窗口控件,将该窗口操作指令对应的操作过程显示在该第一应用程序的窗口中。
在另一种可能的实现方式中,该动态库为通过图形界面开发框架Qt语言编写的,该第一应用程序为通过高级程序设计语言C#、微软基础类库MFC或Qt中的任一种语言编写的;所述操作指令用于指示所述第一应用程序通过所述动态库加载第二应用程序的目标功能;
在该第一应用程序为通过Qt语言编写的情况下,该窗口标识包括:窗口句柄或用户接口对象的基类QWidget;
在该窗口标识为窗口句柄的情况下,该第一创建模块601,用于通过该动态库,调用Qt中的语句QWinWidget或QWindow::fromWinId生成该窗口控件;
在该窗口标识为QWidget的情况下,该第一创建模块601,用于通过该动态库,调用Qt中的语句QWidget::setParent生成该窗口控件。
在本公开实施例中,通过将实现第二应用程序的目标功能的代码文件添加在动态库中,在动态库中创建第一应用程序的窗口的窗口控件,响应于第一应用程序需要实现第二应用程序的目标功能,只需要将该窗口控件与第二应用程序的目标功能窗口绑定,从而第一应用程序就可以通过该窗口控件,调用动态库中的代码文件来实现目标功能。由于可以通过上述的窗口控件创建和绑定,使得第一应用程序实现第二应用程序的目标功能,因此,通过本方案,第二应用程序的开发商无需向第一应用程序的开发商公开实现目标功能的代码文件内容,减小了代码泄露的风险,提高了第二应用程序的安全性。
需要说明的是:上述实施例提供的窗口显示装置在窗口显示时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的窗口显示装置与窗口显示方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图8示出了本公开一个示例性实施例提供的终端800的结构框图。该终端800可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio LayerIV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端800还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,参见图8,终端800包括有:处理器801和存储器802。
处理器801可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器801可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器801也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器801可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器801还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器802还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器802中的非暂态的计算机可读存储介质用于存储至少一个程序代码,该至少一个程序代码用于被处理器801所执行以实现本公开中方法实施例提供的窗口显示方法。
在一些实施例中,参见图9,终端800还可选包括有:外围设备接口803和至少一个外围设备。处理器801、存储器802和外围设备接口803之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口803相连。具体地,外围设备包括:射频电路804、显示屏805、摄像头组件806、音频电路807、定位组件808和电源809中的至少一种。
外围设备接口803可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器801和存储器802。在一些实施例中,处理器801、存储器802和外围设备接口803被集成在同一芯片或电路板上;在一些其他实施例中,处理器801、存储器802和外围设备接口803中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路804用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路804通过电磁信号与通信网络以及其他通信设备进行通信。射频电路804将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路804包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路804可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路804还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本公开对此不加以限定。
显示屏805用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏805是触摸显示屏时,显示屏805还具有采集在显示屏805的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器801进行处理。此时,显示屏805还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏805可以为一个,设置终端800的前面板;在另一些实施例中,显示屏805可以为至少两个,分别设置在终端800的不同表面或呈折叠设计;在再一些实施例中,显示屏805可以是柔性显示屏,设置在终端800的弯曲表面上或折叠面上。甚至,显示屏805还可以设置成非矩形的不规则图形,也即异形屏。显示屏805可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件806用于采集图像或视频。可选地,摄像头组件806包括前置摄像头和后置摄像头。通常,前置摄像头设置在电子设备的前面板,后置摄像头设置在电子设备的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件806还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路807可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器801进行处理,或者输入至射频电路804以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端800的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器801或射频电路804的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路807还可以包括耳机插孔。
定位组件808用于定位终端800的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件808可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源809用于为终端800中的各个组件进行供电。电源809可以是交流电、直流电、一次性电池或可充电电池。当电源809包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端800还包括有一个或多个传感器810。该一个或多个传感器810包括但不限于:加速度传感器811、陀螺仪传感器812、压力传感器813、指纹传感器814、光学传感器815以及接近传感器816。
加速度传感器811可以检测以终端800建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器811可以用于检测重力加速度在三个坐标轴上的分量。处理器801可以根据加速度传感器811采集的重力加速度信号,控制显示屏805以横向视图或纵向视图进行用户界面的显示。加速度传感器811还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器812可以检测终端800的机体方向及转动角度,陀螺仪传感器812可以与加速度传感器811协同采集用户对终端800的3D动作。处理器801根据陀螺仪传感器812采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器813可以设置在终端800的侧边框和/或显示屏805的下层。当压力传感器813设置在终端800的侧边框时,可以检测用户对终端800的握持信号,由处理器801根据压力传感器813采集的握持信号进行左右手识别或快捷操作。当压力传感器813设置在显示屏805的下层时,由处理器801根据用户对显示屏805的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器814用于采集用户的指纹,由处理器801根据指纹传感器814采集到的指纹识别用户的身份,或者,由指纹传感器814根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器801授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器814可以被设置终端800的正面、背面或侧面。当终端800上设置有物理按键或厂商Logo时,指纹传感器814可以与物理按键或厂商Logo集成在一起。
光学传感器815用于采集环境光强度。在一个实施例中,处理器801可以根据光学传感器815采集的环境光强度,控制显示屏805的显示亮度。具体地,当环境光强度较高时,调高显示屏805的显示亮度;当环境光强度较低时,调低显示屏805的显示亮度。在另一个实施例中,处理器801还可以根据光学传感器815采集的环境光强度,动态调整摄像头组件806的拍摄参数。
接近传感器816,也称距离传感器,通常设置在终端800的前面板。接近传感器816用于采集用户与终端800的正面之间的距离。在一个实施例中,当接近传感器816检测到用户与终端800的正面之间的距离逐渐变小时,由处理器801控制显示屏805从亮屏状态切换为息屏状态;当接近传感器816检测到用户与终端800的正面之间的距离逐渐变大时,由处理器801控制显示屏805从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图8和图9中示出的结构并不构成对终端800的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在本公开实施例中,通过将实现第二应用程序的目标功能的代码文件添加在动态库中,在动态库中创建第一应用程序的窗口的窗口控件,响应于第一应用程序需要实现第二应用程序的目标功能,只需要将该窗口控件与第二应用程序的目标功能窗口绑定,从而第一应用程序就可以通过该窗口控件,调用动态库中的代码文件来实现目标功能。由于可以通过上述的窗口控件创建和绑定,使得第一应用程序实现第二应用程序的目标功能,因此,通过本方案,第二应用程序的开发商无需向第一应用程序的开发商公开实现目标功能的代码文件内容,减小了代码泄露的风险,提高了第二应用程序的安全性。
在示例性实施例中,还提供了一种计算机可读存储介质,计算机可读存储介质中存储至少一条程序代码,至少一条程序代码令由处理器加载并执行,以实现上述实施例中窗口显示方法。该计算机可读存储介质可以是存储器。例如,该计算机可读存储介质可以是ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-Only Memory,紧凑型光盘只读储存器)、磁带、软盘和光数据存储设备等。
在本公开实施例中,通过将实现第二应用程序的目标功能的代码文件添加在动态库中,在动态库中创建第一应用程序的窗口的窗口控件,响应于第一应用程序需要实现第二应用程序的目标功能,只需要将该窗口控件与第二应用程序的目标功能窗口绑定,从而第一应用程序就可以通过该窗口控件,调用动态库中的代码文件来实现目标功能。由于可以通过上述的窗口控件创建和绑定,使得第一应用程序实现第二应用程序的目标功能,因此,通过本方案,第二应用程序的开发商无需向第一应用程序的开发商公开实现目标功能的代码文件内容,减小了代码泄露的风险,提高了第二应用程序的安全性。
本公开实施例中,还提供一种计算机程序产品,所述计算机程序产品中存储至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现本公开实施中所述的窗口显示方法。
在本公开实施例中,通过将实现第二应用程序的目标功能的代码文件添加在动态库中,在动态库中创建第一应用程序的窗口的窗口控件,响应于第一应用程序需要实现第二应用程序的目标功能,只需要将该窗口控件与第二应用程序的目标功能窗口绑定,从而第一应用程序就可以通过该窗口控件,调用动态库中的代码文件来实现目标功能。由于可以通过上述的窗口控件创建和绑定,使得第一应用程序实现第二应用程序的目标功能,因此,通过本方案,第二应用程序的开发商无需向第一应用程序的开发商公开实现目标功能的代码文件内容,减小了代码泄露的风险,提高了第二应用程序的安全性。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中执行了详细描述,此处将不做详细阐述说明。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围执行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (7)
1.一种窗口显示方法,其特征在于,所述方法包括:
通过第一应用程序创建窗口;
确定所述窗口的窗口标识;
通过所述第一应用程序将所述窗口标识发送给动态库;所述动态库中包括代码文件,所述代码文件用于实现第二应用程序的目标功能;
在所述动态库中,根据所述窗口标识,创建所述窗口的窗口控件;
在创建所述窗口控件时,生成所述窗口控件的控件标识;所述控件标识用于标识所述窗口控件为数据传输的对象;
通过所述动态库,将所述控件标识发送给所述第一应用程序;
通过所述第一应用程序,向所述动态库中所述控件标识对应的窗口控件发送所述目标功能对应的第一显示数据;
通过所述动态库,对所述第一显示数据进行解码,得到第二显示数据;
响应于通过所述第一应用程序向所述动态库发送的操作指令,根据所述操作指令,通过所述动态库中的所述目标功能对应的代码文件,创建目标功能窗口;
通过所述动态库,将所述目标功能窗口与所述窗口控件绑定;
根据所述目标功能窗口确定所述目标功能;
在所述动态库中,根据所述目标功能,对所述第二显示数据进行数据处理,得到第三显示数据;
根据所述控件标识,确定所述窗口控件对应的窗口标识;
根据所述窗口标识,将所述第三显示数据显示在所述控件标识对应的第一应用程序的窗口中。
2.根据权利要求1所述的方法,其特征在于,所述在所述动态库中,根据所述窗口标识,创建所述窗口的窗口控件之前,所述方法还包括:
在运行所述第一应用程序的过程中,通过所述第一应用程序向所述动态库发送传递参数;
响应于所述传递参数为指定参数值,在所述第一应用程序中加载所述动态库。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过所述动态库接收对所述目标功能窗口的窗口操作指令,所述窗口操作指令用于指示对所述目标功能窗口进行操作;
根据绑定的所述窗口控件,将所述窗口操作指令对应的操作过程显示在所述第一应用程序的窗口中。
4.根据权利要求1所述的方法,其特征所述,所述动态库为通过图形界面开发框架Qt语言编写的,所述第一应用程序为通过高级程序设计语言C#、微软基础类库MFC或Qt中的任一种语言编写的;所述操作指令用于指示所述第一应用程序通过所述动态库加载第二应用程序的目标功能;
在所述第一应用程序为通过Qt语言编写的情况下,所述窗口标识包括:窗口句柄或用户接口对象的基类QWidget;
在所述窗口标识为窗口句柄的情况下,所述在所述动态库中,根据所述窗口标识,创建所述窗口的窗口控件,包括:通过所述动态库,调用Qt中的语句QWinWidget或QWindow::fromWinId生成所述窗口控件;
在所述窗口标识为QWidget的情况下,所述在所述动态库中,根据所述窗口标识,创建所述窗口的窗口控件,包括:通过所述动态库,调用Qt中的语句QWidget::setParent生成所述窗口控件。
5.一种窗口显示装置,其特征在于,所述装置包括:
第一创建模块,用于通过第一应用程序创建窗口;确定所述窗口的窗口标识;通过所述第一应用程序将所述窗口标识发送给动态库;在所述动态库中,根据所述窗口标识,创建所述窗口的窗口控件;所述动态库中包括代码文件,所述代码文件用于实现第二应用程序的目标功能;
第二发送模块,用于在创建所述窗口控件时,生成所述窗口控件的控件标识;所述控件标识用于标识所述窗口控件为数据传输的对象;通过所述动态库,将所述控件标识发送给所述第一应用程序;通过所述第一应用程序,向所述动态库中所述控件标识对应的窗口控件发送所述目标功能对应的第一显示数据;
数据解码模块,用于通过所述动态库,对所述第一显示数据进行解码,得到第二显示数据;
第二创建模块,用于响应于通过所述第一应用程序向所述动态库发送的操作指令,根据所述操作指令,通过所述动态库中的所述目标功能对应的代码文件,创建目标功能窗口;
绑定模块,用于通过所述动态库,将所述目标功能窗口与所述窗口控件绑定;
显示模块,用于根据所述目标功能窗口确定所述目标功能;在所述动态库中,根据所述目标功能,对所述第二显示数据进行数据处理,得到第三显示数据;根据所述控件标识,确定所述窗口控件对应的窗口标识;根据所述窗口标识,将所述第三显示数据显示在所述控件标识对应的第一应用程序的窗口中。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
第一发送模块,用于在运行所述第一应用程序的过程中,通过所述第一应用程序向所述动态库发送传递参数;
加载模块,用于响应于所述传递参数为指定参数值,在所述第一应用程序中加载所述动态库。
7.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器中存储至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以实现如权利要求1至4任一项所述的窗口显示方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010613873.5A CN111752666B (zh) | 2020-06-30 | 2020-06-30 | 窗口显示方法、装置和终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010613873.5A CN111752666B (zh) | 2020-06-30 | 2020-06-30 | 窗口显示方法、装置和终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111752666A CN111752666A (zh) | 2020-10-09 |
CN111752666B true CN111752666B (zh) | 2023-05-30 |
Family
ID=72676798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010613873.5A Active CN111752666B (zh) | 2020-06-30 | 2020-06-30 | 窗口显示方法、装置和终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111752666B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112363662B (zh) * | 2020-11-26 | 2022-04-08 | 深圳创维-Rgb电子有限公司 | 显示屏的锁屏解锁方法、显示终端及可读存储介质 |
CN114691063A (zh) * | 2020-12-29 | 2022-07-01 | 中兴通讯股份有限公司 | 一种屏幕采集方法、终端及存储介质 |
CN112685700B (zh) * | 2020-12-30 | 2023-10-20 | 北京明朝万达科技股份有限公司 | 处理进程的方法、装置、电子设备及存储介质 |
CN113296654B (zh) * | 2021-05-27 | 2023-12-29 | 深信服科技股份有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN113254102B (zh) * | 2021-05-27 | 2024-04-09 | 深信服科技股份有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN113641513A (zh) * | 2021-07-16 | 2021-11-12 | 杭州玖欣物联科技有限公司 | 一种基于屏幕的数据采集方法 |
CN113760286B (zh) * | 2021-08-19 | 2025-02-14 | 北京字节跳动网络技术有限公司 | 一种文件生成方法及电子设备、存储介质 |
CN114020267A (zh) * | 2021-11-04 | 2022-02-08 | 四川启睿克科技有限公司 | 一种rpa窗口控件检测的方法 |
CN114201558A (zh) * | 2021-11-15 | 2022-03-18 | 南方电网深圳数字电网研究院有限公司 | 一种基于本地数据的地图加载方法及装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6683629B1 (en) * | 2000-08-03 | 2004-01-27 | Neoplanet, Inc. | Method in a computer system for embedding a child window in a parent window |
CN102413125A (zh) * | 2011-11-02 | 2012-04-11 | 深圳中兴力维技术有限公司 | 一种单点登录方法及系统 |
CN103034490A (zh) * | 2012-12-05 | 2013-04-10 | 上海创图网络科技发展有限公司 | 一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法 |
CN103593188A (zh) * | 2013-11-14 | 2014-02-19 | 中国电子科技集团公司第四十一研究所 | 一种用于仪器所见即所得菜单的管理系统及管理方法 |
CN103631598A (zh) * | 2013-12-09 | 2014-03-12 | 国家电网公司 | 一种界面整合方法及其系统 |
CN103677833A (zh) * | 2013-12-16 | 2014-03-26 | 中国电子科技集团公司第四十一研究所 | 一种微波测量仪器开放式软件平台的实现方法 |
CN106873972A (zh) * | 2016-12-30 | 2017-06-20 | 中国电力科学研究院 | 基于插件的电网规划仿真平台计算模块接入方法及系统 |
CN109725958A (zh) * | 2017-10-30 | 2019-05-07 | 腾讯科技(深圳)有限公司 | 对资源管理器管理的文件进行处理的方法及装置 |
CN110673844A (zh) * | 2019-09-26 | 2020-01-10 | 苏州中科全象智能科技有限公司 | 一种图像处理软件开发方法及系统 |
CN111309408A (zh) * | 2020-02-24 | 2020-06-19 | 深圳震有科技股份有限公司 | 一种程序嵌入方法、系统及存储介质 |
-
2020
- 2020-06-30 CN CN202010613873.5A patent/CN111752666B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6683629B1 (en) * | 2000-08-03 | 2004-01-27 | Neoplanet, Inc. | Method in a computer system for embedding a child window in a parent window |
CN102413125A (zh) * | 2011-11-02 | 2012-04-11 | 深圳中兴力维技术有限公司 | 一种单点登录方法及系统 |
CN103034490A (zh) * | 2012-12-05 | 2013-04-10 | 上海创图网络科技发展有限公司 | 一种基于Managed C实现WPF窗体与GDI窗体消息互操作的方法 |
CN103593188A (zh) * | 2013-11-14 | 2014-02-19 | 中国电子科技集团公司第四十一研究所 | 一种用于仪器所见即所得菜单的管理系统及管理方法 |
CN103631598A (zh) * | 2013-12-09 | 2014-03-12 | 国家电网公司 | 一种界面整合方法及其系统 |
CN103677833A (zh) * | 2013-12-16 | 2014-03-26 | 中国电子科技集团公司第四十一研究所 | 一种微波测量仪器开放式软件平台的实现方法 |
CN106873972A (zh) * | 2016-12-30 | 2017-06-20 | 中国电力科学研究院 | 基于插件的电网规划仿真平台计算模块接入方法及系统 |
CN109725958A (zh) * | 2017-10-30 | 2019-05-07 | 腾讯科技(深圳)有限公司 | 对资源管理器管理的文件进行处理的方法及装置 |
CN110673844A (zh) * | 2019-09-26 | 2020-01-10 | 苏州中科全象智能科技有限公司 | 一种图像处理软件开发方法及系统 |
CN111309408A (zh) * | 2020-02-24 | 2020-06-19 | 深圳震有科技股份有限公司 | 一种程序嵌入方法、系统及存储介质 |
Non-Patent Citations (2)
Title |
---|
DLL中封装Qt窗口给MFC或Qt应用程序调用,并将DLL中的窗口嵌入主程序中,实现与主程序交互和自身事件循环的解决方案;Michael;《https://blog.csdn.net/explorer114/article/details/105508832》;20200414;第1-7页 * |
将MFC dll中的窗口嵌入到工程窗口中;rundll64;《https://blog.csdn.net/rundll64/article/details/45534223》;20150506;第1-3页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111752666A (zh) | 2020-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111752666B (zh) | 窗口显示方法、装置和终端 | |
CN110308956B (zh) | 一种应用界面显示方法、装置及移动终端 | |
CN110841285B (zh) | 界面元素的显示方法、装置、计算机设备及存储介质 | |
CN111191224B (zh) | 虚拟机检测的对抗方法、装置及计算机可读存储介质 | |
CN113127130B (zh) | 页面跳转方法、装置及存储介质 | |
CN110362366B (zh) | 一种应用界面显示方法及装置 | |
CN108717365B (zh) | 在应用程序中执行功能的方法和装置 | |
CN112230910B (zh) | 嵌入型程序的页面生成方法、装置、设备及存储介质 | |
CN111737100A (zh) | 数据获取方法、装置、设备及存储介质 | |
CN110851823B (zh) | 数据访问方法、装置、终端及存储介质 | |
CN109800003B (zh) | 应用下载方法、装置、终端及存储介质 | |
CN113867848A (zh) | 图形接口的调用方法、装置、设备及可读存储介质 | |
CN113051015A (zh) | 页面渲染方法、装置、电子设备及存储介质 | |
CN111897465B (zh) | 弹窗显示方法、装置、设备及存储介质 | |
CN110677713B (zh) | 视频图像处理方法及装置、存储介质 | |
CN107943484B (zh) | 执行业务功能的方法和装置 | |
CN113538633B (zh) | 动画播放方法、装置、电子设备及计算机可读存储介质 | |
CN114296824A (zh) | 页面信息的配置方法、装置、设备及计算机可读存储介质 | |
CN112988177A (zh) | 应用安装包的发布、应用程序的运行方法、服务器及终端 | |
CN111580892B (zh) | 一种业务组件调用的方法、装置、终端和存储介质 | |
CN111601114B (zh) | 应用于直播间的用户操作响应方法及装置 | |
CN110941458B (zh) | 启动应用程序的方法、装置、设备及存储介质 | |
CN112163677B (zh) | 应用机器学习模型的方法、装置及设备 | |
CN111241334B (zh) | 显示歌曲信息页面的方法、装置、系统、设备及存储介质 | |
CN113378154B (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 |