CN111309408A - 一种程序嵌入方法、系统及存储介质 - Google Patents
一种程序嵌入方法、系统及存储介质 Download PDFInfo
- Publication number
- CN111309408A CN111309408A CN202010111411.3A CN202010111411A CN111309408A CN 111309408 A CN111309408 A CN 111309408A CN 202010111411 A CN202010111411 A CN 202010111411A CN 111309408 A CN111309408 A CN 111309408A
- Authority
- CN
- China
- Prior art keywords
- program
- embedded
- setting
- interface
- windows api
- 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.)
- Pending
Links
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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- 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
Abstract
本发明涉及一种程序嵌入方法、系统及存储介质,所述程序嵌入方法,包括:在主程序内根据待嵌入程序的安装路径创建应用程序进程,并返回待嵌入程序的进程句柄,为待嵌入程序设置父显示容器;利用Windows API接口在主程序内设置待嵌入程序的属性、扩展属性以及显示参数。本发明所提供的程序嵌入方法,可通过Windows API接口将待嵌入程序嵌入主程序,在主程序内直接运行已嵌入的程序,既不用在主程序内开发新功能,又不用分别单独运行多个程序。
Description
技术领域
本发明涉及程序嵌入技术领域,特别是涉及一种程序嵌入方法、系统及存储介质。
背景技术
在企业中存在的各种各样的应用软件,而且这些应用软件会来自不同的企业,或者是来自同一企业不同部门开发的软件。有些软件具有独立的功能,但是其他的一些软件又需要这些独立软件的功能。问题的关键在于:是重新开发这些功能呢?还是单独的运行这些软件?若是重新开发这些功能,若功能简单,则花费的人力物力资源比较少,若是功能复杂,则会花费大量资源,或者造成耽搁项目交付。若是只是单独运行软件,来使用这些功能,则给用户开起来则显得比较不专业,不是一个整体,让用户的使用起来极不方便。如何在尽可能减少资源花费的情况下,解决软件繁多运行复杂的问题。
可见,现有技术还有待于改进和发展。
发明内容
基于此,有必要针对上述技术问题,提供一种程序嵌入方法、系统及存储介质,旨在尽可能减少资源花费的情况下,解决软件繁多运行复杂的问题。
本发明的技术方案如下:
一种程序嵌入方法,其包括:
在主程序内根据待嵌入程序的安装路径创建应用程序进程,并返回待嵌入程序的进程句柄,为待嵌入程序设置父显示容器;
利用Windows API接口在主程序内设置待嵌入程序的属性、扩展属性以及显示参数。
在进一步地优选方案中,所述在主程序内根据待嵌入程序的安装路径创建应用程序进程,并返回待嵌入程序的进程句柄,为待嵌入程序设置父显示容器的步骤之前还包括:
初始化待嵌入程序,控制主程序显示待嵌入界面,并将Windows API接口导入主程序。
在进一步地优选方案中,将Windows API接口导入主程序的步骤具体包括:导入设置子窗口的父窗口容器接口、改变窗口属性接口及设置窗口位置与大小接口。
在进一步地优选方案中,所述为待嵌入程序设置父显示容器具体为:利用WindowsAPI SetParent接口为待嵌入程序设置父显示容器。
在进一步地优选方案中,所述利用Windows API接口在主程序内设置待嵌入程序的属性具体为:利用Windows API SetWindowLong接口设置待嵌入程序的属性为可见。
在进一步地优选方案中,所述利用Windows API接口在主程序内设置待嵌入程序的扩展属性具体为:利用Windows API SetWindowLong接口设置待嵌入程序的扩展属性为无边框、不显示黑边、不再任务栏显示。
在进一步地优选方案中,所述利用Windows API接口在主程序内设置待嵌入程序的显示参数具体包括:利用Windows API MoveWindow接口设置待嵌入程序显示的位置。
在进一步地优选方案中,所述利用Windows API接口在主程序内设置待嵌入程序的显示参数具体还包括:利用Windows API MoveWindow接口设置待嵌入程序的显示大小。
一种程序嵌入系统,其包括存储器及处理器,所述存储器存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的程序嵌入方法的步骤。
一种存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如上所述的程序嵌入方法的步骤。
与现有技术相比,本发明提供的程序嵌入方法,包括:在主程序内根据待嵌入程序的安装路径创建应用程序进程,并返回待嵌入程序的进程句柄,为待嵌入程序设置父显示容器;利用Windows API接口在主程序内设置待嵌入程序的属性、扩展属性以及显示参数。本发明所提供的程序嵌入方法,可通过Windows API接口将待嵌入程序嵌入主程序,在主程序内直接运行已嵌入的程序,既不用在主程序内开发新功能,又不用分别单独运行多个程序。
附图说明
图1是本发明中程序嵌入方法较佳实施例的流程图。
图2是本发明中程序嵌入系统较佳实施例的原理框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供了一种程序嵌入方法,用于将一种程序(即待嵌入程序)嵌入至另一种程序(即主程序),使待嵌入程序在被嵌入后,用户可在主程序内启动和操作被嵌入的程序。如图1所示,所述程序嵌入方法包括步骤:
S100、在主程序内根据待嵌入程序的安装路径创建应用程序进程,并返回待嵌入程序的进程句柄(以下代称为句柄A),为待嵌入程序设置父显示容器(SetParent(句柄A,界面F的句柄))。
本发明中的程序是指可执行程序,可执行程序(executable program,EXE File)是指一种可在操作系统存储空间中浮动定位的可执行程序。在MS-DOS和MS-WINDOWS下,此类文件扩展名为·exe。
句柄,是整个Windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类对象中的不同的实例,诸如:一个窗口、按钮、图标、滚动条、输出设备、控件或者文件等;应用程序能够通过句柄访问相应的对象的信息。
父容器是指所在的容器,比如一个button在一个panel里,那么panel就是button的父容器。父显示容器中的显示是指功能为显示。
优选所述为待嵌入程序设置父显示容器具体为:利用Windows API SetParent接口为待嵌入程序设置父显示容器。
较佳地是,在所述S100之前还包括步骤:初始化待嵌入程序,控制主程序显示待嵌入界面,并将Windows API接口导入主程序。待嵌入界面是指用于显示待嵌入程序的界面。
所述将Windows API接口导入主程序具体包括:导入设置子窗口的父窗口容器接口,可选:
[DllImport("user32.dll",SetLastError=true)]
public static extern long SetParent(IntPtr hWndChild,IntPtrhWndNewParent)
将Windows API接口导入主程序还包括:导入改变窗口属性接口,可选:
[DllImport("user32.dll",EntryPoint="SetWindowLong",CharSet=CharSet.Auto)]
public static extern IntPtr SetWindowLong(HandleRef hWnd,int nIndex,int dwNewLong)
将Windows API接口导入主程序还包括:设置窗口位置接口,可选:
[DllImport("user32.dll",SetLastError=true)]
public static extern bool MoveWindow(IntPtr hwnd,int x,int y,int cx,int cy,bool repaint)
将Windows API接口导入主程序还包括:设置窗口大小接口,可选:
[DllImport("user32.dll",SetLastError=true)]
public static extern long GetWindowLong(IntPtr hwnd,int nIndex)
S200、利用Windows API接口在主程序内设置待嵌入程序的属性、扩展属性以及显示参数。
所述S200具体包括:
S210、利用Windows API接口在主程序内设置待嵌入程序的属性;优选该步骤具体为:利用Windows API SetWindowLong接口设置待嵌入程序的属性为可见(SetWindowLong(句柄A,GWL_STYLE,WS_VISIBLE))。
优选GWL_STYLE其为windows的常量值-16;WS_VISIBLE其为windows的消息常量值0x10000000。
S220、利用WindowsAPI接口在主程序内设置待嵌入程序的属性;优选该步骤具体为:利用WindowsAPISetWindowLong接口设置待嵌入程序的扩展属性为无边框、不显示黑边、不再任务栏显示(SetWindowLong(句柄A,GWL_EXSTYLE,(int)(GetWindowLong(句柄A,GWL_EXSTYLE)&~(WS_EX_WINDOWEDGE|WS_EX_DLGMODALFRAME|WS_EX_TOOLWIND OW))))。
优选GWL_EXSTYLE其为windows的常量值-20,GetWindowLong(句柄A,GWL_EXSTYLE)其为可执行程序X的扩展属性,WS_EX_WINDOWEDGE其为windows的消息常量值0x00000100,WS_EX_DLGMODALFRAME其为windows的消息常量值0x00000001,WS_EX_TOOLWINDOW其为windows的消息常量值0x00000080。
S230、利用WindowsAPI接口在主程序内设置待嵌入程序的显示参数具体包括:利用Windows API MoveWindow接口设置待嵌入程序显示的位置和大小(MoveWindow(句柄A,0,0,control.Width,control.Height,true))。
如图2所示,本发明还提供了一种程序嵌入系统,其包括存储器10及处理器20,所述存储器10存储有计算机程序,所述计算机程序被处理器20执行时实现如上所述的程序嵌入方法的步骤。
本发明还提供了一种存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如上所述的程序嵌入方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(SyNchliNk)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种程序嵌入方法,其特征在于,包括:
在主程序内根据待嵌入程序的安装路径创建应用程序进程,并返回待嵌入程序的进程句柄,为待嵌入程序设置父显示容器;
利用Windows API接口在主程序内设置待嵌入程序的属性、扩展属性以及显示参数。
2.根据权利要求1所述的程序嵌入方法,其特征在于,所述在主程序内根据待嵌入程序的安装路径创建应用程序进程,并返回待嵌入程序的进程句柄,为待嵌入程序设置父显示容器的步骤之前还包括:
初始化待嵌入程序,控制主程序显示待嵌入界面,并将Windows API接口导入主程序。
3.根据权利要求2所述的程序嵌入方法,其特征在于,将Windows API接口导入主程序的步骤具体包括:导入设置子窗口的父窗口容器接口、改变窗口属性接口及设置窗口位置与大小接口。
4.根据权利要求1所述的程序嵌入方法,其特征在于,所述为待嵌入程序设置父显示容器具体为:利用Windows API SetParent接口为待嵌入程序设置父显示容器。
5.根据权利要求1所述的程序嵌入方法,其特征在于,所述利用Windows API接口在主程序内设置待嵌入程序的属性具体为:利用Windows API SetWindowLong接口设置待嵌入程序的属性为可见。
6.根据权利要求1所述的程序嵌入方法,其特征在于,所述利用Windows API接口在主程序内设置待嵌入程序的扩展属性具体为:利用Windows API SetWindowLong接口设置待嵌入程序的扩展属性为无边框、不显示黑边、不再任务栏显示。
7.根据权利要求1所述的程序嵌入方法,其特征在于,所述利用Windows API接口在主程序内设置待嵌入程序的显示参数具体包括:利用Windows API MoveWindow接口设置待嵌入程序显示的位置。
8.根据权利要求1所述的程序嵌入方法,其特征在于,所述利用Windows API接口在主程序内设置待嵌入程序的显示参数具体还包括:利用Windows API MoveWindow接口设置待嵌入程序的显示大小。
9.一种程序嵌入系统,其特征在于,包括存储器及处理器,所述存储器存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的程序嵌入方法的步骤。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的程序嵌入方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010111411.3A CN111309408A (zh) | 2020-02-24 | 2020-02-24 | 一种程序嵌入方法、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010111411.3A CN111309408A (zh) | 2020-02-24 | 2020-02-24 | 一种程序嵌入方法、系统及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111309408A true CN111309408A (zh) | 2020-06-19 |
Family
ID=71156834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010111411.3A Pending CN111309408A (zh) | 2020-02-24 | 2020-02-24 | 一种程序嵌入方法、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111309408A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111752666A (zh) * | 2020-06-30 | 2020-10-09 | 杭州海康威视数字技术股份有限公司 | 窗口显示方法、装置和终端 |
Citations (7)
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 |
CN1851641A (zh) * | 2005-09-28 | 2006-10-25 | 华为技术有限公司 | 嵌入式设备用户界面的实现方法 |
CN102426537A (zh) * | 2011-11-02 | 2012-04-25 | 北京数码大方科技有限公司 | Cad中外部集成进程调用主程序进程的方法及装置 |
CN104715191A (zh) * | 2015-03-26 | 2015-06-17 | 广州快飞计算机科技有限公司 | 一种嵌入式主程序的启动检测与保护的方法及系统 |
CN108196848A (zh) * | 2018-01-08 | 2018-06-22 | 武汉斗鱼网络科技有限公司 | 界面嵌入显示方法、装置、用户终端及可读存储介质 |
CN109101298A (zh) * | 2017-06-20 | 2018-12-28 | 武汉斗鱼网络科技有限公司 | Windows跨进程窗口管理方法、存储介质、电子设备及系统 |
CN110633156A (zh) * | 2018-06-22 | 2019-12-31 | 杭州海康威视系统技术有限公司 | 浏览器关联应用程序的方法、装置及电子设备、存储介质 |
-
2020
- 2020-02-24 CN CN202010111411.3A patent/CN111309408A/zh active Pending
Patent Citations (7)
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 |
CN1851641A (zh) * | 2005-09-28 | 2006-10-25 | 华为技术有限公司 | 嵌入式设备用户界面的实现方法 |
CN102426537A (zh) * | 2011-11-02 | 2012-04-25 | 北京数码大方科技有限公司 | Cad中外部集成进程调用主程序进程的方法及装置 |
CN104715191A (zh) * | 2015-03-26 | 2015-06-17 | 广州快飞计算机科技有限公司 | 一种嵌入式主程序的启动检测与保护的方法及系统 |
CN109101298A (zh) * | 2017-06-20 | 2018-12-28 | 武汉斗鱼网络科技有限公司 | Windows跨进程窗口管理方法、存储介质、电子设备及系统 |
CN108196848A (zh) * | 2018-01-08 | 2018-06-22 | 武汉斗鱼网络科技有限公司 | 界面嵌入显示方法、装置、用户终端及可读存储介质 |
CN110633156A (zh) * | 2018-06-22 | 2019-12-31 | 杭州海康威视系统技术有限公司 | 浏览器关联应用程序的方法、装置及电子设备、存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111752666A (zh) * | 2020-06-30 | 2020-10-09 | 杭州海康威视数字技术股份有限公司 | 窗口显示方法、装置和终端 |
CN111752666B (zh) * | 2020-06-30 | 2023-05-30 | 杭州海康威视数字技术股份有限公司 | 窗口显示方法、装置和终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106716349B (zh) | 特化类的手动精炼 | |
JP5796755B2 (ja) | プリヒート型ソフトウェアインストレーション | |
US9934005B2 (en) | Dynamically building locale objects or subsections of locale objects based on historical data | |
US6513158B1 (en) | Method and apparatus for running multiple java applications simultaneously | |
AU2018241159B2 (en) | Contextual solicitation in a starter application | |
US20030033441A1 (en) | Highly componentized system architecture with a demand-loading namespace and programming model | |
US8161471B2 (en) | Utility for optimizing required memory for distribution in embedded systems | |
US11474810B2 (en) | Run-time application modification | |
US20040015960A1 (en) | Method for loading and executing an application in an embedded environment | |
JPH09500465A (ja) | ダイナミック・リンク・システム | |
US7698636B2 (en) | System and method for in-context editing of components | |
WO2008112385A1 (en) | Isolating, managing and communicating with user interface elements | |
CN108008953A (zh) | 一种动态适配操作系统主题风格的Qt图形程序设计方法 | |
CN111309408A (zh) | 一种程序嵌入方法、系统及存储介质 | |
CN111782304A (zh) | 分页加载数据逻辑控制方法、装置、计算机设备及介质 | |
JP2004504668A (ja) | コンピュータ・ソフトウエアのインストレーション | |
US20080128715A1 (en) | Optimization utility for developing embedded systems | |
CN111506312B (zh) | 页面生成方法、装置、计算机设备及存储介质 | |
CN111984887A (zh) | 网页组件库加载方法、装置、存储介质及电子设备 | |
CN102473090B (zh) | 可用于访问bios的多个接口文件 | |
WO2000062160A2 (en) | Method and system for dynamic injection of execution logic into a windowed operating system | |
JPH0793276A (ja) | コンピュータの立ち上げ方式 | |
JPH07200233A (ja) | グラフィック部品管理装置 | |
JP7188988B2 (ja) | 数値制御装置および数値制御装置の制御方法 | |
Freeman et al. | JavaScript Primer, Part 1 |
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 |