数据返回方法、装置和计算机设备制造方法及图纸

技术编号:35037840 阅读:30 留言:0更新日期:2022-09-24 23:15
本发明专利技术实施例提供了一种数据返回方法、装置和计算机设备。该方法包括:通过ADB工具包执行ADB命令,生成ADB执行结果;通过写句柄将ADB执行结果写入匿名管道,生成ADB管道数据;通过读句柄,读取ADB管道数据;将ADB管道数据返回给主程序。本发明专利技术实施例中,计算机设备通过执行ADB命令得到ADB执行结果的返回值,极大地简化了主程序获取第三方应用程序的执行结果的流程,且返回值包括具体的ADB执行结果,返回值的精确度较高,降低了程序开发的难度。降低了程序开发的难度。降低了程序开发的难度。

【技术实现步骤摘要】
数据返回方法、装置和计算机设备


[0001]本专利技术实施例涉及计算机
,尤其涉及一种数据返回方法、装置和计算机设备。

技术介绍

[0002]在搭载Windows操作系统的计算机设备的C/C++程序开发中,经常会遇到主程序调用第三方应用程序进行操作的场景,跨进程间通信是一个令人困扰的问题。在搭载Windows操作系统的计算机设备上,主程序想要获取第三方应用程序的执行结果时,主程序和第三方应用程序均需处于启动状态,计算机设备执行第三方应用程序得到执行结果后,复制执行结果,并将执行结果粘贴至主程序。主程序获取第三方应用程序的执行结果的过程较为繁琐,且占用的内存空间较大。
[0003]相关技术中,计算机设备通常通过调用system函数运行命令行命令,以得到返回值。system函数的返回值包括计算机设备运行命令行命令得到的int型返回值,计算机设备并不能通过system函数得到命令行命令的具体运行结果。例如,计算机设备运行system(“ls”)命令,返回值包括0或非0的int型返回值,返回值的精确度较低,增大了程序开发的难度。

技术实现思路

[0004]有鉴于此,本专利技术实施例提供了一种数据返回方法、装置和计算机设备,用以解决主程序获取第三方应用程序的执行结果的过程较为繁琐,且获取的返回值的精确度较低,程序开发难度较大的问题。
[0005]第一方面,本专利技术实施例提供了一种数据返回方法,所述方法包括:
[0006]通过安卓调试桥ADB工具包执行ADB命令,生成ADB执行结果;
[0007]通过写句柄将所述ADB执行结果写入匿名管道,生成ADB管道数据;
[0008]通过读句柄,读取所述ADB管道数据;
[0009]将所述ADB管道数据返回给主程序。
[0010]在一种可能的实现方式中,所述通过写句柄将所述ADB执行结果写入匿名管道,生成ADB管道数据之前,还包括:
[0011]判断为匿名管道分配的缓冲空间的空闲缓冲空间的容量是否大于或等于设定容量;
[0012]若判断出所述空闲缓冲空间的容量小于设定容量,则读取所述缓冲空间的缓冲数据,将所述缓冲数据加载至预先创建的缓冲区,执行所述通过所述写句柄将所述ADB执行结果写入匿名管道,生成ADB管道数据的步骤;
[0013]若判断出所述空闲缓冲空间的容量大于或等于设定容量,则执行所述通过所述写句柄将所述ADB执行结果写入匿名管道,生成ADB管道数据的步骤。
[0014]在一种可能的实现方式中,所述通过写句柄将所述ADB执行结果写入匿名管道,生
成ADB管道数据之前,还包括:
[0015]设置所述匿名管道的读句柄和写句柄;
[0016]设置第一结构体和第一结构体参数;
[0017]调用创建管道CreatePipe函数,根据所述读句柄、所述写句柄和所述第一结构体创建匿名管道,将所述读句柄和所述写句柄返回给主程序。
[0018]在一种可能的实现方式中,所述将所述ADB管道数据返回给主程序之后,还包括:
[0019]获取所述ADB工具包所在的目录路径;
[0020]判断所述ADB管道数据的返回值是否为空值;
[0021]若判断出所述ADB管道数据的返回值不是空值,则确定出所述ADB工具包所在的目录路径正确;
[0022]若判断出所述ADB管道数据的返回值是空值,则确定出所述ADB工具包所在的目录路径错误。
[0023]在一种可能的实现方式中,所述调用创建管道CreatePipe函数,根据所述读句柄、所述写句柄和所述第一结构体创建匿名管道之后,还包括:设置第二结构体和第二结构体参数;
[0024]调用创建进程CreateProcess函数,根据所述第二结构体创建所述主程序的子进程。
[0025]在一种可能的实现方式中,所述第一结构体参数包括第一结构体的大小、安全描述符和句柄继承方式。
[0026]在一种可能的实现方式中,所述第二结构体参数包括第二结构体的大小、标准输出句柄、标准错误句柄、位字段和窗口显示状态。
[0027]第二方面,本专利技术实施例提供了一种数据返回装置,所述装置包括:
[0028]第一生成模块,用于通过ADB工具包执行ADB命令,生成ADB执行结果;
[0029]第二生成模块,用于通过写句柄将所述ADB执行结果写入匿名管道,生成ADB管道数据;
[0030]读取模块,用于通过读句柄,读取所述ADB管道数据;
[0031]返回模块,用于将所述ADB管道数据返回给主程序。
[0032]第三方面,本专利技术实施例提供了一种计算机设备,包括:显示屏;一个或多个处理器;存储器;以及一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述存储器中,所述一个或多个计算机程序包括指令,当所述指令被所述设备执行时,使得所述设备执行第一方面或第一方面任一可能的实现方式中的数据返回方法。
[0033]第四方面,本专利技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行第一方面或第一方面任一可能的实现方式中的数据返回方法。
[0034]本专利技术实施例提供的技术方案中,通过ADB工具包执行ADB命令,生成ADB执行结果;通过写句柄将ADB执行结果写入匿名管道,生成ADB管道数据;通过读句柄,读取ADB管道数据;将ADB管道数据返回给主程序。本专利技术实施例中,计算机设备通过执行ADB命令得到ADB执行结果的返回值,且返回值包括具体的ADB执行结果,返回值的精确度较高,降低了程序开发的难度。
【附图说明】
[0035]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0036]图1为本专利技术实施例提供的一种数据返回方法的流程图;
[0037]图2为本专利技术实施例提供的一种数据写入方法的流程图;
[0038]图3为本专利技术实施例提供的一种管道创建方法的流程图;
[0039]图4为本专利技术实施例提供的一种进程间通信的示意图;
[0040]图5为本专利技术实施例提供的一种路径验证方法的流程图;
[0041]图6为本专利技术实施例提供的一种数据返回装置的结构示意图;
[0042]图7为本专利技术实施例提供的一种计算机设备的示意图。
【具体实施方式】
[0043]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据返回方法,其特征在于,所述方法包括:通过安卓调试桥ADB工具包执行ADB命令,生成ADB执行结果;通过写句柄将所述ADB执行结果写入匿名管道,生成ADB管道数据;通过读句柄,读取所述ADB管道数据;将所述ADB管道数据返回给主程序。2.根据权利要求1所述的方法,其特征在于,所述通过写句柄将所述ADB执行结果写入匿名管道,生成ADB管道数据之前,还包括:判断为匿名管道分配的缓冲空间的空闲缓冲空间的容量是否大于或等于设定容量;若判断出所述空闲缓冲空间的容量小于设定容量,则读取所述缓冲空间的缓冲数据,将所述缓冲数据加载至预先创建的缓冲区,执行所述通过所述写句柄将所述ADB执行结果写入匿名管道,生成ADB管道数据的步骤;若判断出所述空闲缓冲空间的容量大于或等于设定容量,则执行所述通过所述写句柄将所述ADB执行结果写入匿名管道,生成ADB管道数据的步骤。3.根据权利要求1或2所述的方法,其特征在于,所述通过写句柄将所述ADB执行结果写入匿名管道,生成ADB管道数据之前,还包括:设置所述匿名管道的读句柄和写句柄;设置第一结构体和第一结构体参数;调用创建管道CreatePipe函数,根据所述读句柄、所述写句柄和所述第一结构体创建匿名管道,将所述读句柄和所述写句柄返回给主程序。4.根据权利要求1所述的方法,其特征在于,所述将所述ADB管道数据返回给主程序之后,还包括:获取所述ADB工具包所在的目录路径;判断所述ADB管道数据的返回值是否为空值;若判断出所述ADB管道数据的返回值不是空值,则确定出所述ADB工具包所在的目录路径正确;若判断出...

【专利技术属性】
技术研发人员:赵子熙
申请(专利权)人:展讯通信天津有限公司
类型:发明
国别省市:

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

1