一种共用窗口的进程调用方法技术

技术编号:2835120 阅读:349 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种共用窗口的进程调用方法,包括:将一个任务划分为多个子任务;当其中的一个子任务运行时,该任务进程调用其他子任务,并将自己的窗口参数传递给被调用的子任务;被调用的子任务运行时,其进程根据接收到的窗口参数,将调用该子任务的进程的窗口作为其父窗口来创建自己的窗口。采用本发明专利技术方法,可降低系统耦合度,当一个子任务的进程崩溃时,不会影响整个任务的执行,提高了系统运行效率。

【技术实现步骤摘要】

本专利技术涉及计算机领域,尤其涉及。
技术介绍
在计算机应用领域中,实现某一任务的程序代码被编译为一个可执行文 件,每个可执行文件运行于内存中的不同空间,称为进程。目前,在计算机应用领域,多为针对一个任务编译一个可执行文件,通过 执行该文件可完成该任务所包含的多个子任务。多个子任务模块之间可能有功 能重叠,即多个子任务模块的部分功能是相同的。此时,将多个子任务模块完成相同功能的共用代码进行函数封装,编译为动态链接库(Dynamic Link Library, DLL)文件。当某个子任务需要实现共用功能时,调用该DLL文件。 子任务模块在调用DLL文件时,通过函数接口向其传递参数,DLL文件利用 该参数运行处理后生成结果值,并传回调用该DLL的子任务模块。 现有技术的这种任务执行方式存在以下缺点(1)当多个子任务才莫块需要同时调用一个DLL时,若该DLL文件由于 运行时出现错误而崩溃,将会导致调用它的子任务模块崩溃,进而响应整个任 务的执行。(2 )各子任务模块间有可能存在一个或多个DLL文件,因此耦合度较高, 不易维护。(3)由于多个子任务4莫块调用一个DLL文件,当释放其中一个子任务进 程(如关闭该子任务;f莫块)时,该子任务模块占用的资源不能完全释放,需要 有一部分资源保证共用代码的正常运行。
技术实现思路
本专利技术提供一种多个任务共用 一个窗口的方法,用以解决现有技术中 一个 任务中各子任务的进程之间相互影响,其中一个子任务的崩溃将会导致整个任 务不能正常运行的问题。本专利技术方法包括将一个任务划分为多个子任务,当其中的一个子任务运行时,该任务进程 调用其他子任务,并将自己的窗口参数传递给被调用的子任务;被调用的子任务运行时,其进程根据接收到的窗口参数,将调用该子任务 的进程的窗口作为其父窗口来创建自己的窗口。根据本专利技术的上述方法,根据完成的功能将所述任务划分为多个功能彼此 独立的子任务,并设定各子任务间的调用关系和调用方式。所述当其中的一个子任务运行时,该子任务进程根据预先设定的调用方式 和调用关系,直接调用其他子任务,或根据用户在界面上所作出的操作调用其 他子任务。根据本专利技术的上述方法,所述当其中的一个子任务运行时,该子任务进程 向所述被调用的子任务传递自己的窗口句柄;所述被调用的子任务进程将所述窗口句柄对应的窗口作为父窗口来创建 自己的窗口。根据本专利技术的上述方法,所述当其中的一个子任务运行时,该子任务进程 调用其他一个或多个子任务,并将自己的窗口参数分别传递给被调用的子任 务;被调用的子任务的进程分别将调用它的子任务进程的窗口作为父窗口来 创建自己的窗口。各子任务运行时,其进程分别占用不同的资源空间。 本专利技术的有益效果如下(1)本专利技术将一个任务划分为多个功能彼此独立的子任务,子任务间通 过进程调用实现整个任务功能,因此,当一个子任务的进程崩溃时,不会影响 整个任务的执行。(2) —个子任务调用另一个子任务时,将自己的窗口句柄传递给被调用 的子任务,使被调用的子任务以该窗口句柄对应的窗口作为父窗口来创建自己 的窗口 ,从而实现各子任务之间仅通过窗口句柄联系在一起,因此耦合度很低, 易于维护。(3) 由于各子任务功能彼此独立,仅通过窗口句柄联系在一起,没有共 用代码,因此,当释放其中一个子任务进程时,该子任务进程占用的资源能够 完全释放,提高了运行效率。附图说明图1为本专利技术多个^f壬务进程共用一个窗口的流程示意图。 具体实施例方式本专利技术提供一种多个任务进程共用一个窗口的方法,该方法首先将一个任 务划分为多个子任务,每个子任务功能独立。在该任务执行过程中,运行一个 子任务时,该子任务进程调用另一个子任务,并将自己的窗口参数传递给被调 用的子任务进程;被调用的子任务进程创建自己的窗口时,根据接收到的窗口 参数,将其对应的窗口指定为父窗口。参见图1,为本专利技术多个任务进程共用一个窗口的流程示意图,具体步骤 包括SIO、按照一个任务的各种子功能将一个任务划分为多个功能彼此独立的 子任务。划分子任务时,设定各子任务间的调用关系和调用方式。调用关系确定一 个子任务可调用哪个或哪些其他的子任务;调用方式确定在调用其他子任务时 是不通过用户在界面上操作,由该子任务进程直接启动调用过程,还是根据用户在界面上操作启动调用过程。每个子任务的代码彼此独立,不存在共用代码的引用关系;每个子任务被分别编译为可执行文件。Sll、执行笫一个子任务,该子任务进程调用其他子任务,并将自己的窗 口句柄传递给被调用的子任务进程。由于预先设定了各子任务的调用关系,也就确定了执行该任务时需要执行 的第一个子任务。第一个子任务运行时,首先创建该子任务的窗口,该窗口被分配一个窗口 句柄,以标识该窗口。第一个子任务运行时按照预先设定的调用方法调用其他子任务,调用其他 子任务的方式有两种第一种方式在第一个子任务中预先指定被直接调用的子任务,当执行第 一个子任务时,该子任务进程直接调用指定的子任务。这种方式中,用户不参 与调用过程,并感觉不到子任务的调用。第二种方式第一个子任务包含为用户提供选择执行其他子任务的选项的功能,第一个子任务运行后,在用户界面中列出可供用户选择的选项,以执行对应的子任务。在用户选定执行选项时,该选项对应的子任务被调用。不管采用哪种任务调用方式,在子任务被调用时,第一个子任务进程将其 窗口句柄传递给被调用的子任务。第一个子任务可以调用一个或多个其他的子任务,在调用多个子任务时,第一个子任务调用多个其他的子任务时,分别将其窗口句柄传递给被调用的子 任务。S12、被调用的子任务进程根据窗口句柄,将对应的窗口指定为该子任务 进程窗口的父窗口,并创建该子任务进程自己的窗口。如第一个子任务进程传递的窗口句柄是hModuleWndl,被调用的子任务进 程创建窗口时, 通 过 HWND hModuleWnd2 = CreateWindow(….,hModuleWndl ,..)的方法创建窗口 hModuleWnd2,这样将 hModuleWndl指定为hModuleWnd2的父窗口 , hModuleWndl与hModuleWnd2 之间可以通过Windows API PostMessage或SendMessage互相通信。当第一个子任务调用多个其他的子任务时,被调用的子任务进程分别按上 述方法将调用它的子任务进程(第一个子任务进程)的窗口作为父窗口创建自 己的窗口。每个子任务的进程(包括被调用的子任务和调用它的子任务的进程)运行 在不同的内存空间。被调用的子任务可依照上述方式继续调用其他的子任务,在调用其他的子 任务时,将自己的窗口句柄传递给被调用的子任务,使被调用的子任务以调用 它的子任务进程的窗口作为父窗口,创建自己的窗口。上述流程中,各个子任务彼此相互独立,各子任务进程运行在内存中的不 同空间,因此,当一个子任务进程崩溃时不会影响调用它的子任务进程或被它 调用的子任务进程。并且当一个子任务进程被释放(如该进程被关闭)时,能 够完全释放该进程所占用的内存空间。下面以一个具体的实施例对上述多个进程共用 一个窗口的流程进行描述。本实施例以实现网上视频直播为例,具体步骤包括520、 按照实现的功能,将网上视频直播任务划分为多个本文档来自技高网...

【技术保护点】
一种共用窗口的进程调用方法,其特征在于,将一个任务划分为多个子任务,当其中的一个子任务运行时,该任务进程调用其他子任务,并将自己的窗口参数传递给被调用的子任务;被调用的子任务运行时,其进程根据接收到的窗口参数,将调用该子任务的进程的 窗口作为其父窗口来创建自己的窗口。

【技术特征摘要】

【专利技术属性】
技术研发人员:张庆
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1