一种应用进程窗口及界面的投屏方法及装置与流程

文档序号:17261800发布日期:2019-03-30 09:42阅读:505来源:国知局
一种应用进程窗口及界面的投屏方法及装置与流程

本发明涉及一种计算机技术领域,尤其涉及一种应用进程窗口及界面的投屏方法及装置。



背景技术:

目前,出于对便利及应用需求的考虑,通常需要在多个不同的进程之间进行融会贯通,在具体表现方式上,通常是通过主进程来调用一个或者多个的外部进程。在现有的主进程调用多个外部进程的实现方法中,在调用外部进程时,通常是为各外部进程打开独立的窗口,即主进程与各外部进程分别具有独立的窗口,且各窗口之间在显示方式上不相关联。在做应用投屏软件的时候,发现一台电脑上有很多进程,有一些是不可显示的,有一些是后台进程,有一些进程根本没有窗口,那么软件在选择进程的时候就需要识别哪些是能够投屏的应用。



技术实现要素:

为了克服现有技术的不足,本发明的目的之一在于提供一种应用进程窗口及界面的投屏方法,其能更方便对获取到的进程进行应用投屏。

本发明的目的之二在于提供一种电子设备,其能更方便对获取到的进程进行应用投屏。

本发明的目的之三在于提供一种计算机可读存储介质,其能更方便对获取到的进程进行应用投屏。

本发明的目的之一采用如下技术方案实现:

一种应用进程窗口及界面的投屏方法,包括以下步骤:

采集步骤:获取计算机中的进程;

判断步骤:判断所述进程是否拥有可见窗口,如果是,则执行截图获取步骤;

截图获取步骤:获取可见窗口的界面截图;

投放步骤:将获得的界面截图后投放到对应的屏幕上。

进一步地,所述判断步骤具体包括以下子步骤:

识别号获取步骤:获取所述进程的进程识别号;

id列表获取步骤:根据进程识别号获取所述进程的窗口id列表;

分析步骤:分析所述进程的窗口id列表中的每一个窗口id以判断每个窗口id是否是可见窗口,如果是,则执行截图获取步骤。

进一步地,在所述判断步骤中,通过调用windowapi函数获取所述进程的进程识别号以及调用windowapi函数获取所述进程的窗口id列表。

进一步地,所述分析步骤中具体包括以下子步骤:

判断获取到的窗口id列表中的窗口id的个数是否为零,如果否,则执行下一步;

判断所述窗口id是否属于窗口类别,如果是,则执行下一步;

判断窗口id是否能在操作界面上可见,如果是,则执行下一步;

判断所述窗口id是否存在窗口标题,如果是,则执行下一步;

判断获取到的窗口id的窗口的宽度和/或高度是否为零,如果是,则执行下一步;

提取拥有可见窗口的窗口id。

进一步地,在所述分析步骤中,所述窗口类别的判断、窗口id是否可见的判断、窗口标题的获取、窗口的宽度和高度的获取均通过windowapi函数得到。

进一步地,所述截图获取步骤具体为:通过使用windowapiprintfwindow函数根据可见窗口id获取可见窗口的界面截图。

进一步地,在截图获取步骤之后还包括图像处理步骤:

获取界面截图的像素宽高;

判断所述界面截图的像素宽高是否超过系统桌面的像素宽高,如果是,则执行下一步;

根据截图起始点和系统桌面的像素宽高对界面截图进行截图操作以获得处理后的界面截图。

进一步地,所述截图起始点的获取通过截图起始点坐标计算公式计算得到,所述截图起始点坐标计算公式为:((w_c-w_s)/2,(h_c-h_s)/2);其中,界面截图的像素宽高分别采用w_c和h_c,系统桌面的像素宽高分别是w_s和h_s。

本发明的目的之二采用如下技术方案实现:

一种电子设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明目的之一中任意一项所述的一种应用进程窗口及界面的投屏方法。

本发明的目的之三采用如下技术方案实现:

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明目的之一中任意一项所述的一种应用进程窗口及界面的投屏方法。

相比现有技术,本发明的有益效果在于:

本发明的应用进程窗口及界面的投屏方法通过判断获取到的进行是否拥有可见窗口,以及对获取到的可见窗口进行截图操作,以使得系统更方便的对进程对应的窗口进行投屏操作,大大提升了投屏操作的工作效率。

附图说明

图1为实施例一中的应用进程窗口及界面的投屏方法的流程图;

图2为实施例一中的判断步骤的具体流程图;

图3为实施例一中的图像处理步骤中的具体流程图。

具体实施方式

下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。

实施例一

在具体说明原理方法前,先简单介绍一下,要对哪些数据进行处理,该方法处理的对象是window上电脑的进程,进程(process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。简单来说window上开启的一个应用程序就是一个进程的体现。有些进程是没有窗口的,有些进程只在系统运行时默默工作,不会体现在用户的操作界面上。更不必说对它的界面进行采集。

如图1所示,本实施例提供了一种应用进程窗口及界面的投屏方法,包括以下步骤:

s1:获取计算机中的进程;这一步是主要是为了获取到对应的进程,并将其作为一个判断基础,在这一步操作的时候,可以有两种方式的操作,一种是获取计算机中的所有进程,或者是或者当前计算机中正在进行的进程,这里的获取步骤方式可以使得用户根据实际需求来进行设计。

s2:判断所述进程是否拥有可见窗口,如果是,则执行步骤s3;这一步为判断步骤,如图2所示,所述判断步骤具体包括以下子步骤:

识别号获取步骤:通过调用windowapi函数获取要被采集的进程识别号;进程识别号作为与进程连接的关键,每个进程有唯一的pid编号(进程识别号)。它是进程运行时系统随机分配的,并不代表专门的进程。在运行时pid是不会改变标识符的,但是你终止程序后再运行pid标识符就会被系统回收,就可能会被继续分配给新运行的程序。

id列表获取步骤:根据进程识别号获取所述进程的窗口id列表;

分析步骤:分析所述进程的窗口id列表中的每一个窗口id以判断每个窗口id是否是可见窗口,如果是,则执行步骤s3。在所述判断步骤中,通过调用windowapi函数获取所述进程的进程识别号以及调用windowapi函数获取所述进程的窗口id列表。

所述分析步骤中具体包括以下子步骤:

判断获取到的窗口id列表中的窗口id的个数是否为零,如果否,则执行下一步;也即是当窗口id的个数等于0时,就表示没有窗口,那么就可以退出识别,进行下一个进程的识别操作。

判断所述窗口id是否属于窗口类别,如果是,则执行下一步;如果所述窗口id并不属于窗口类别,也即是其只是后台运行的进程,那么其并不会有窗口,也就没有继续识别的必要。

判断窗口id是否能在操作界面上可见,如果是,则执行下一步;即是其属于窗口类别,还有一种情况是,他在操作页面上并不可见,当出现这种情况的时候,也需要结束识别。

判断所述窗口id是否存在窗口标题,如果是,则执行下一步;在window上每个可见的窗口都会有个窗口标题,一般在程序界面的左上角,而没有窗口标题的窗口,经过试验都是不可见的,假如存在标题,那么就可以继续进行下一步的判断,否则就不是可见窗口,就不必再继续判断。

判断获取到的窗口id的窗口的宽度和/或高度是否为零,如果是,则执行下一步;假如高度和宽度,其中有一个的值是等于0,那么这个进程对应的也不是可见窗口,可以终止识别。

提取拥有可见窗口的窗口id。当经过上述所有判断之后,那么即可证明该进程所对应的窗口即是可见窗口,获取该可见窗口的窗口id以便于接下来进行进一步地的判断。在上述分析步骤中,所述窗口类别的判断、窗口id是否可见的判断、窗口标题的获取、窗口的宽度和高度的获取均通过windowapi函数得到。

s3:通过使用windowapiprintfwindow函数根据可见窗口id获取可见窗口的界面截图;使用该printfwindow函数进行可见窗口界面截图是因为就算程序被其他应用程序覆盖了,但是该函数依旧能够进行截图。大大提升了截图正确率,因为如果不采用这种方式的截图,其可以截到的图像是被覆盖的,被覆盖部分的信息展示不出来,这时候,也就会大大损害该投屏的效果。

如图3所示,在步骤s3之后还包括图像处理步骤,所述图像处理步骤包括以下步骤:获取界面截图的像素宽高;为了更好的对截图图像进行展示,故而还需要对截图的图像进行进一步的图像识别和操作,这一步主要是为了获取到的截图图像的基础参数,以便于后续进行判断处理。

判断所述界面截图的像素宽高是否超过系统桌面的像素宽高,如果是,则执行下一步;判断截图的像素宽高,是否超过系统桌面的像素宽高,为什么需要做这么一个判断呢?是因为假如截图的宽度超过了系统桌面的像素宽的度,那么截图就会在左右两条边上产生白色边框,同样高度超出了桌面的像素高度,那么,也会在截图的上下两条边上产生白色边框。假如截图像素宽高没有超过系统桌面的像素宽高,则不必进行下一步的处理;

根据截图起始点和系统桌面的像素宽高对界面截图进行截图操作以获得处理后的界面截图。截图有白边就需要截取图像,截取图像的方法是需要判断截取的起始点,然后再根据起始点进行和系统桌面像素宽高对图像进行截取。

所述截图起始点的获取通过截图起始点坐标计算公式计算得到,所述截图起始点坐标计算公式为:((w_c-w_s)/2,(h_c-h_s)/2);其中,界面截图的像素宽高分别采用w_c和h_c,系统桌面的像素宽高分别是w_s和h_s。截图的坐标系的建立是,以截图左上角为原点(0,0)以宽度的方向为x轴,高度的方向为y轴。这一步判断能够使得截图的图像更好的适应于系统桌面,而不会出现不适配的现象,大大提高了该程序的整体适应性。让用户不必担心得到的截图不与系统桌面匹配的问题。

s4:将获得的界面截图后投放到对应的屏幕上。这一步主要为投屏操作,由于上述步骤已经对进程的是否存在窗口以及界面截图进行过判断和操作,这一步只需要对得到的界面截图投放到对应的屏幕上即可完成操作。

本实施例的方法的目的主要是为了解决投屏软件选择进程的时候能够识别所进程有没有窗口和有窗口的情况下哪些窗口是可以显示的,解决获取界面时的问题。本方法在win7和win10验证过,能识别大部分电脑进程的可见窗口,也能获取大部分的可见窗口截图。

实施例二

实施例二公开了一种电子设备,该电子设备包括处理器、存储器以及程序,其中处理器和存储器均可采用一个或多个,程序被存储在存储器中,并且被配置成由处理器执行,处理器执行该程序时,实现实施例一的应用进程窗口及界面的投屏方法。该电子设备可以是手机、电脑、平板电脑等等一系列的电子设备。

实施例三

实施例三公开了一种计算机可读存储介质,该存储介质用于存储程序,并且该程序被处理器执行时,实现实施例一的应用进程窗口及界面的投屏方法。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

值得注意的是,上述基于内容更新通知装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换均属于本发明所要求保护的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1