CN102681861B - 安装软件的方法和装置 - Google Patents

安装软件的方法和装置 Download PDF

Info

Publication number
CN102681861B
CN102681861B CN201110059923.0A CN201110059923A CN102681861B CN 102681861 B CN102681861 B CN 102681861B CN 201110059923 A CN201110059923 A CN 201110059923A CN 102681861 B CN102681861 B CN 102681861B
Authority
CN
China
Prior art keywords
word
monitor task
window handle
topic window
module
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
Application number
CN201110059923.0A
Other languages
English (en)
Other versions
CN102681861A (zh
Inventor
胡中兴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Tencent Computer Systems Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201110059923.0A priority Critical patent/CN102681861B/zh
Publication of CN102681861A publication Critical patent/CN102681861A/zh
Application granted granted Critical
Publication of CN102681861B publication Critical patent/CN102681861B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种安装软件的方法和装置,属于计算机软件领域。方法包括:步骤1:建立安装包对应的监控任务;步骤2:运行安装包,将安装包的进程加入监控任务;步骤3:枚举顶层窗体句柄,获取每个顶层窗体句柄所属的进程;步骤4:如果某一顶层窗体句柄所属的进程在监控任务中,枚举该顶层窗体句柄对应的顶层窗体上所有控件句柄,获取每个控件句柄上的文字;步骤5:根据文字中包含的信息,对文字相应的控件执行相应的操作;步骤6:重复步骤3、4和5,直到监控任务中的所有进程都执行完毕。装置包括:建立模块、添加模块、第一和第二枚举和获取模块、执行模块和循环模块。本发明能够实现安装包自动安装完毕,整个安装过程无须用户手动干预。

Description

安装软件的方法和装置
技术领域
本发明涉及计算机软件领域,特别涉及一种安装软件的方法和装置。
背景技术
在各种操作系统平台上,例如windows平台,用户经常需要安装各种应用程序的安装包,以便于使用该应用程序提供的功能。例如,安装各种聊天工具,以便于实现与其他用户之间的即时通讯功能。
目前,应用程序的安装包通常为用户提供安装向导,用户根据安装向导的提示逐步完成安装。例如,当用户点击安装包的可执行文件时,该应用程序的安装向导首先提示用户是否同意一些规范,如果用户点击同意再执行下一步,还会提示用户是否安装某些插件,或是否将网页设为首页等,用户需要逐步确认选择,经过数个操作之后,最终才能完成安装。
由此可见,现有技术需要用户根据安装向导,逐步手工确认选择才能完成安装。对于不熟悉软件安装的用户来说,可能无法顺利完成安装或安装出错,影响用户使用软件。
发明内容
为了改变软件需要用户手工干预才能完成安装的现状,本发明实施例提供了一种安装软件的方法和装置。
所述技术方案如下:
本发明一方面提供了一种安装软件的方法,所述方法包括:
步骤1:建立安装包对应的监控任务;
步骤2:运行所述安装包,将所述安装包的进程加入所述监控任务;
步骤3:枚举顶层窗体句柄,获取每个顶层窗体句柄所属的进程;
步骤4:如果顶层窗体句柄所属的进程在所述监控任务中,枚举所述顶层窗体句柄对应的顶层窗体上所有控件句柄,获取每个控件句柄上的文字;如果所述顶层窗体句柄所属的进程不在所述监控任务中,则执行所述枚举顶层窗体句柄的步骤;
步骤5:根据所述文字中包含的信息,对所述文字相应的控件执行相应的操作;
步骤6:重复步骤3、步骤4和步骤5,直到所述监控任务中的所有进程都执行完毕。
其中,步骤1具体包括:调用系统API CreateJobObject建立安装包对应的监控任务。
其中,步骤2具体包括:调用系统API CreateProcess运行所述安装包,使用AssignProcessToJobObject将所述安装包的进程加入所述监控任务。
其中,步骤3具体包括:通过EnumWindows枚举windows顶层窗体句柄,使用GetWindowThreadProcessId获取每个顶层窗体句柄所属的进程。
其中,步骤5具体包括:
如果所述文字中包含确认相关的信息,对所述文字相应的控件执行点击操作;如果所述文字中包含选择相关的信息,对所述文字相应的控件执行不选择操作;如果所述文字中包含路径相关的信息,在所述文字相应的控件中输入用户设定的路径。
所述确认相关的信息包括:“确认”、“我同意”、“I agree”、“下一步”、以及“完成”;
所述选择相关的信息包括:“插件”、“设为主页”、以及“收费”选项;
所述路径相关的信息包括:“保存到”、以及“安装到”。
其中,所述方法还包括:对至少两个安装包,执行权利要求1所述的方法,以实现软件批量安装。
本发明另一方面提供了一种安装软件的装置,所述装置包括:
建立模块,用于建立安装包对应的监控任务;
添加模块,用于运行所述安装包,将所述安装包的进程加入所述监控任务;
第一枚举和获取模块,用于枚举顶层窗体句柄,获取每个顶层窗体句柄所属的进程;
第二枚举和获取模块,用于如果顶层窗体句柄所属的进程在所述监控任务中,枚举所述顶层窗体句柄对应的顶层窗体上所有控件句柄,获取每个控件句柄上的文字;如果所述顶层窗体句柄所属的进程不在所述监控任务中,则执行所述枚举顶层窗体句柄的步骤;
执行模块,用于根据所述文字中包含的信息,对所述文字相应的控件执行相应的操作;
循环模块,用于重复执行第一枚举和获取模块、第二枚举和获取模块和执行模块所执行的操作,直到所述监控任务中的所有进程都执行完毕。
其中,所述建立模块,具体用于调用系统API CreateJobObject建立安装包对应的监控任务。
其中,所述添加模块,具体用于调用系统API CreateProcess运行所述安装包,使用AssignProcessToJobObject将所述安装包的进程加入所述监控任务。
其中,所述第一枚举和获取模块,具体用于通过EnumWindows枚举windows顶层窗体句柄,使用GetWindowThreadProcessId获取每个顶层窗体句柄所属的进程。
其中,所述执行模块,具体用于
如果所述文字中包含确认相关的信息,对所述文字相应的控件执行点击操作;如果所述文字中包含选择相关的信息,对所述文字相应的控件执行不选择操作;如果所述文字中包含路径相关的信息,在所述文字相应的控件中输入用户设定的路径。
所述确认相关的信息包括:“确认”、“我同意”、“I agree”、“下一步”、以及“完成”;
所述选择相关的信息包括:“插件”、“设为主页”、以及“收费”选项;
所述路径相关的信息包括:“保存到”、以及“安装到”。
所述装置还包括:
批量安装模块,用于对至少两个安装包,执行建立模块、添加模块、第一枚举和获取模块、第二枚举和获取模块、执行模块和循环模块所执行的操作,以实现软件批量安装。
本发明实施例提供的技术方案带来的有益效果是:
通过建立安装包对应的监控任务,将安装包的进程加入监控任务,枚举顶层窗体句柄,如果顶层窗体句柄所属的进程在监控任务中,枚举该顶层窗体句柄对应的顶层窗体上所有控件句柄,获取每个控件句柄上的文字,根据文字中包含的信息,对该文字相应的控件执行相应的操作,直到监控任务中的所有进程都执行完毕,则该安装包自动安装完毕,整个安装过程无须用户手动干预。
附图说明
图1是本发明实施例1中提供的安装软件的方法流程图;
图2是本发明实施例2中提供的安装软件的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
参见图1,本实施例提供了一种安装软件的方法,该方法包括:
步骤1:建立安装包对应的监控任务;
具体的,调用系统API(Application Programming Interface,应用程序编程接口)CreateJobObject建立安装包对应的监控任务。
步骤2:运行该安装包,将该安装包的进程加入该监控任务;
具体的,调用系统API CreateProcess运行该安装包,使用AssignProcessToJobObject将该安装包的进程加入该监控任务。
步骤3:枚举顶层窗体句柄,获取每个顶层窗体句柄所属的进程;
具体的,通过EnumWindows枚举windows顶层窗体句柄,使用GetWindowThreadProcessId获取每个顶层窗体句柄所属的进程。
步骤4:如果某一顶层窗体句柄所属的进程在该监控任务中,枚举该顶层窗体句柄对应的顶层窗体上所有控件句柄,获取每个控件句柄上的文字;
如果顶层窗体句柄所属的进程不在该监控任务中,则执行步骤3,枚举另一个顶层窗体句柄。
步骤5:根据该文字中包含的信息,对该文字相应的控件执行相应的操作;
如果该文字中包含确认相关的信息,对该文字相应的控件执行点击操作,其中,确认相关的信息包括但不限于:“确认”、“我同意”、“I agree”、“下一步”、以及“完成”等,相应的控件通常为按钮Button;
如果该文字中包含选择相关的信息,对该文字相应的控件执行不选择操作,其中,选择相关的信息包括但不限于:“插件”、“设为主页”、以及“收费”选项等,相应的控件通常为选项Option、CheckBox;
如果该文字中包含路径相关的信息,在该文字相应的控件中输入用户设定的路径,其中,路径相关的信息包括但不限于:“保存到”、以及“安装到”等,相应的控件通常为Edit。
例如,某一应用程序的安装向导提示用户是否同意一些规范,只有在同意的情况下,才能进行后续的安装,则本步骤会模拟点击“我同意”,以进行后续安装,后续安装包如果提示用户是否安装某些插件,或是否将网页设为主页等,则本步骤会默认不勾选这些选项,后续安装包如果提示用户输入安装路径,如果用户设置了安装路径,则路径的编辑框输入用户设定的路径,如果用户没有设置,则可以输入通常默认的安装路径,如C:\Program Files等。
上述人工智能选择操作,不仅可以帮助用户自动完成软件安装,而且可以避免软件安装过程中存在的强制安装插件或诱导消费等陷阱。
步骤6:如果该监控任务中的所有进程没有都执行完毕,重复步骤3、步骤4和步骤5,直到该监控任务中的所有进程都执行完毕,则该安装包安装完成。
进一步的,对至少两个安装包,执行步骤1-步骤6的方法,可以实现软件批量安装。对于网络管理员需要统一批量部署软件的情况,本步骤可以避免大量枯燥重复机械的安装操作。
本实施例通过建立安装包对应的监控任务,将安装包的进程加入监控任务,枚举顶层窗体句柄,如果顶层窗体句柄所属的进程在监控任务中,枚举该顶层窗体句柄对应的顶层窗体上所有控件句柄,获取每个控件句柄上的文字,根据文字中包含的信息,对该文字相应的控件执行相应的操作,直到监控任务中的所有进程都执行完毕,则该安装包自动安装完毕,整个安装过程无须用户手动干预。同时,对于多个安装包,可以批量安装软件。
实施例2
参见图2,本实施例提供了一种安装软件的装置,该装置包括:
建立模块11,用于建立安装包对应的监控任务;
添加模块12,用于运行该安装包,将该安装包的进程加入该监控任务;
第一枚举和获取模块13,用于枚举顶层窗体句柄,获取每个顶层窗体句柄所属的进程;
第二枚举和获取模块14,用于如果顶层窗体句柄所属的进程在该监控任务中,枚举该顶层窗体句柄对应的顶层窗体上所有控件句柄,获取每个控件句柄上的文字;
执行模块15,用于根据该文字中包含的信息,对该文字相应的控件执行相应的操作;
循环模块16,用于重复执行第一枚举和获取模块13、第二枚举和获取模块14和执行模块15所执行的操作,直到该监控任务中的所有进程都执行完毕。
其中,建立模块11,具体用于调用系统API CreateJobObject建立安装包对应的监控任务。
添加模块12,具体用于调用系统API CreateProcess运行该安装包,使用AssignProcessToJobObject将该安装包的进程加入该监控任务。
第一枚举和获取模块13,具体用于通过EnumWindows枚举windows顶层窗体句柄,使用GetWindowThreadProcessId获取每个顶层窗体句柄所属的进程。
执行模块15,具体用于如果该文字中包含确认相关的信息,对该文字相应的控件执行点击操作;如果该文字中包含选择相关的信息,对该文字相应的控件执行不选择操作;如果该文字中包含路径相关的信息,在该文字相应的控件中输入用户设定的路径。
其中,确认相关的信息包括但不限于:“确认”、“我同意”、“I agree”、“下一步”、以及“完成”等,相应的控件通常为按钮Button;
其中,选择相关的信息包括但不限于:“插件”、“设为主页”、以及“收费”选项等,相应的控件通常为选项Option、CheckBox;
其中,路径相关的信息包括但不限于:“保存到”、以及“安装到”等,相应的控件通常为Edit。
该装置还包括:批量安装模块,用于对至少两个安装包,执行建立模块、添加模块、第一枚举和获取模块、第二枚举和获取模块、执行模块和循环模块所执行的操作,以实现软件批量安装。
本实施例通过建立安装包对应的监控任务,将安装包的进程加入监控任务,枚举顶层窗体句柄,如果顶层窗体句柄所属的进程在监控任务中,枚举该顶层窗体句柄对应的顶层窗体上所有控件句柄,获取每个控件句柄上的文字,根据文字中包含的信息,对该文字相应的控件执行相应的操作,直到监控任务中的所有进程都执行完毕,则该安装包自动安装完毕,整个安装过程无须用户手动干预。同时,对于多个安装包,可以批量安装软件。
以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、光盘或软盘。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (14)

1.一种安装软件的方法,其特征在于,所述方法包括:
步骤1:建立安装包对应的监控任务;
步骤2:运行所述安装包,将所述安装包的进程加入所述监控任务;
步骤3:枚举顶层窗体句柄,获取每个顶层窗体句柄所属的进程;
步骤4:如果顶层窗体句柄所属的进程在所述监控任务中,枚举所述顶层窗体句柄对应的顶层窗体上所有控件句柄,获取每个控件句柄上的文字;如果所述顶层窗体句柄所属的进程不在所述监控任务中,则执行所述枚举顶层窗体句柄的步骤;
步骤5:根据所述文字中包含的信息,对所述文字相应的控件执行相应的操作;
步骤6:重复步骤3、步骤4和步骤5,直到所述监控任务中的所有进程都执行完毕。
2.根据权利要求1所述的方法,其特征在于,步骤1具体包括:调用系统API CreateJobObject建立安装包对应的监控任务。
3.根据权利要求1所述的方法,其特征在于,步骤2具体包括:调用系统API CreateProcess运行所述安装包,使用AssignProcessToJobObject将所述安装包的进程加入所述监控任务。
4.根据权利要求1所述的方法,其特征在于,步骤3具体包括:通过EnumWindows枚举windows顶层窗体句柄,使用GetWindowThreadProcessId获取每个顶层窗体句柄所属的进程。
5.根据权利要求1所述的方法,其特征在于,步骤5具体包括:
如果所述文字中包含确认相关的信息,对所述文字相应的控件执行点击操作;如果所述文字中包含选择相关的信息,对所述文字相应的控件执行不选择操作;如果所述文字中包含路径相关的信息,在所述文字相应的控件中输入用户设定的路径。
6.根据权利要求5所述的方法,其特征在于,
所述确认相关的信息包括:“确认”、“我同意”、“I agree”、“下一步”、以及“完成”;
所述选择相关的信息包括:“插件”、“设为主页”、以及“收费”选项;
所述路径相关的信息包括:“保存到”、以及“安装到”。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:对至少两个安装包,执行权利要求1所述的方法,以实现软件批量安装。
8.一种安装软件的装置,其特征在于,所述装置包括:
建立模块,用于建立安装包对应的监控任务;
添加模块,用于运行所述安装包,将所述安装包的进程加入所述监控任务;
第一枚举和获取模块,用于枚举顶层窗体句柄,获取每个顶层窗体句柄所属的进程;
第二枚举和获取模块,用于如果顶层窗体句柄所属的进程在所述监控任务中,枚举所述顶层窗体句柄对应的顶层窗体上所有控件句柄,获取每个控件句柄上的文字;如果所述顶层窗体句柄所属的进程不在所述监控任务中,则执行所述枚举顶层窗体句柄的步骤;
执行模块,用于根据所述文字中包含的信息,对所述文字相应的控件执行相应的操作;
循环模块,用于重复执行第一枚举和获取模块、第二枚举和获取模块和执行模块所执行的操作,直到所述监控任务中的所有进程都执行完毕。
9.根据权利要求8所述的装置,其特征在于,所述建立模块,具体用于调用系统API CreateJobObject建立安装包对应的监控任务。
10.根据权利要求8所述的装置,其特征在于,所述添加模块,具体用于调用系统API CreateProcess运行所述安装包,使用AssignProcessToJobObject将所述安装包的进程加入所述监控任务。
11.根据权利要求8所述的装置,其特征在于,所述第一枚举和获取模块,具体用于通过EnumWindows枚举windows顶层窗体句柄,使用GetWindowThreadProcessId获取每个顶层窗体句柄所属的进程。
12.根据权利要求8所述的装置,其特征在于,所述执行模块,具体用于
如果所述文字中包含确认相关的信息,对所述文字相应的控件执行点击操作;如果所述文字中包含选择相关的信息,对所述文字相应的控件执行不选择操作;如果所述文字中包含路径相关的信息,在所述文字相应的控件中输入用户设定的路径。
13.根据权利要求12所述的装置,其特征在于,
所述确认相关的信息包括:“确认”、“我同意”、“I agree”、“下一步”、以及“完成”;
所述选择相关的信息包括:“插件”、“设为主页”、以及“收费”选项;
所述路径相关的信息包括:“保存到”、以及“安装到”。
14.根据权利要求8所述的装置,其特征在于,所述装置还包括:
批量安装模块,用于对至少两个安装包,执行权利要求8所述的装置所执行的操作,以实现软件批量安装。
CN201110059923.0A 2011-03-14 2011-03-14 安装软件的方法和装置 Active CN102681861B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110059923.0A CN102681861B (zh) 2011-03-14 2011-03-14 安装软件的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110059923.0A CN102681861B (zh) 2011-03-14 2011-03-14 安装软件的方法和装置

Publications (2)

Publication Number Publication Date
CN102681861A CN102681861A (zh) 2012-09-19
CN102681861B true CN102681861B (zh) 2015-06-24

Family

ID=46813838

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110059923.0A Active CN102681861B (zh) 2011-03-14 2011-03-14 安装软件的方法和装置

Country Status (1)

Country Link
CN (1) CN102681861B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104765630B (zh) * 2015-04-10 2019-02-01 百度在线网络技术(北京)有限公司 软件安装方法及装置
CN105677543A (zh) * 2015-12-25 2016-06-15 广州视睿电子科技有限公司 程序安装包安装显示方法和系统
CN107273145A (zh) * 2016-04-06 2017-10-20 中兴通讯股份有限公司 一种软件管理方法及装置、终端
CN108762773B (zh) * 2018-05-17 2021-10-08 山东华软金盾软件股份有限公司 一种模拟用户登录安装程序的方法
CN111078236A (zh) * 2019-12-18 2020-04-28 中国建设银行股份有限公司 一种软件自动安装方法、系统、电子设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100349120C (zh) * 2005-03-16 2007-11-14 威盛电子股份有限公司 自动安装软件程序的方法
CN101976197A (zh) * 2010-10-12 2011-02-16 彭扬 一种自动安装多个手机软件的方法

Also Published As

Publication number Publication date
CN102681861A (zh) 2012-09-19

Similar Documents

Publication Publication Date Title
CN105447643B (zh) 一种面向云计算平台的科学工作流系统及方法
CN102681861B (zh) 安装软件的方法和装置
CN105700888A (zh) 一种基于jbpm工作流引擎的可视化快速开发平台
CN105094508A (zh) 一种移动终端应用程序进行窗口控制的方法和装置
CN110413276B (zh) 参数编辑方法及装置、电子设备、存储介质
US20150106153A1 (en) Workflow compilation
CN102955723B (zh) 一种硬件自动测试方法及系统
CN108509195A (zh) H5活动页面的制作方法、电子装置及可读存储介质
CN103853586A (zh) 一种在uefi层实现无线网卡驱动的方法
US20240028991A1 (en) Flexible Work Breakdown Structure
CN104111857A (zh) 一种多机型bios参数自动配置的方法
CN103414750A (zh) Web可视化编辑ANDROID的客户端应用的系统及方法
CN103809983A (zh) 一种修改bios setup界面的方法
CN110687921B (zh) 一种无人机飞行控制方法、装置及电子设备和存储介质
CN109086077A (zh) 一种应用程序的运行方法和装置
CN102736924B (zh) 软件安装的方法和装置
CN105843659B (zh) 一种嵌入式c编译器的实现方法及系统
CN104731600A (zh) 一种将安卓系统服务插件化的实现方法
CN102779059A (zh) 塞班客户端上启动应用的方法和装置
CN111880793A (zh) 一种基于二进制文件的hmi组态配置系统和方法
CN103414749A (zh) Web可视化编辑iOS的客户端应用的系统及方法
US20140258973A1 (en) Systems And Methods For Automatically Generating Applications
CN104281452A (zh) 一种终端
CN103543986B (zh) Cfx的计算任务的实现方法和装置
CN108228708B (zh) 大数据etl系统及其调度方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20151228

Address after: The South Road in Guangdong province Shenzhen city Fiyta building 518057 floor 5-10 Nanshan District high tech Zone

Patentee after: Shenzhen Tencent Computer System Co., Ltd.

Address before: 518000 Guangdong city of Shenzhen province Futian District SEG Science Park 2 East Room 403

Patentee before: Tencent Technology (Shenzhen) Co., Ltd.