CN103064704A - 一种基于进程标识的软件窗口全生命周期管理方法 - Google Patents

一种基于进程标识的软件窗口全生命周期管理方法 Download PDF

Info

Publication number
CN103064704A
CN103064704A CN2012105525774A CN201210552577A CN103064704A CN 103064704 A CN103064704 A CN 103064704A CN 2012105525774 A CN2012105525774 A CN 2012105525774A CN 201210552577 A CN201210552577 A CN 201210552577A CN 103064704 A CN103064704 A CN 103064704A
Authority
CN
China
Prior art keywords
window
handle
software
formation
startqueue
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.)
Granted
Application number
CN2012105525774A
Other languages
English (en)
Other versions
CN103064704B (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.)
FOURTH RESEARCH INSTITUTE OF SECOND ARTILLERY EQUIPMENT ACADEMY OF PLA
Original Assignee
FOURTH RESEARCH INSTITUTE OF SECOND ARTILLERY EQUIPMENT ACADEMY OF PLA
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 FOURTH RESEARCH INSTITUTE OF SECOND ARTILLERY EQUIPMENT ACADEMY OF PLA filed Critical FOURTH RESEARCH INSTITUTE OF SECOND ARTILLERY EQUIPMENT ACADEMY OF PLA
Priority to CN201210552577.4A priority Critical patent/CN103064704B/zh
Publication of CN103064704A publication Critical patent/CN103064704A/zh
Application granted granted Critical
Publication of CN103064704B publication Critical patent/CN103064704B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明属于计算机软件技术领域,特别涉及一种对软件窗口进行管理的方法。其技术方案是:一种基于进程标识的软件窗口全生命周期管理方法,在启动业务软件后,记录进程句柄,并以其为特征获取进程主窗口的句柄,通过监视进程的句柄捕获到进程退出的时机,通过进程主窗口句柄对窗口进行激活、最大化、最小化、关闭等操作,无需受控窗口提供其具体窗口信息,更无需向业务软件进程植入代码,因而相对于现有技术具有更好的适应性。

Description

一种基于进程标识的软件窗口全生命周期管理方法
技术领域
本发明属于计算机软件技术领域,特别涉及一种对软件窗口进行管理的方法。
背景技术
在计算机应用中,经常涉及到系统中多个独立的业务软件的交叉使用。因而需要对系统中各类业务软件窗口进行统一管理,尤其是对运行态的业务软件窗口进行跟踪及控制。关于软件窗口的管理和控制,通常的方法是采用windows消息拦截机制,捕获窗口在创建、激活、销毁时激发的消息,在恰当的时机调用相应的操作维护窗口的管理信息。这种方法固然有其优势,但受控窗口必须提供其具体的窗口信息,如此一来,业务软件窗口信息的任何修改,都将影响窗口集成管理的正确性,而各业务软件往往由多个软件供应商分别开发,发生以上修改将不可避免;另外,该方法或需向业务软件进程植入代码,这种代码植入的方式存在安全风险并难于控制和调试。
发明内容
本发明的目的是:提供一种面向Windows操作系统,对各类业务软件具有更好适应性的软件窗口全生命周期管理方法。
本发明的技术方案是:一种基于进程标识的软件窗口全生命周期管理方法,设系统集成的多个业务软件分别为A,B,...,Z,则:
a.当其中一个业务软件A启动时,顺序执行以下步骤:
a1.业务应用软件A如果启动成功,其所在的进程AProcess的句柄为AHandle,否则,控制权返回至人机界面,等待用户操作;
a2.采用进程句柄匹配的算法,对当前桌面的顶层窗口进行遍历;
a2.1.获取当前桌面的顶层窗口集合;
a2.2.遍历顶层窗口集合,将该窗口所在的进程句柄与AHandle进行匹配;
a2.3.如果:两句柄相等,则该窗口即是AProcess的主窗口;
a2.4.否则:转至a2.1步骤继续遍历;
a3.获取AProcess的主窗口句柄AWndHandle,将其放入StartQueue队列中保存;
a3.1.如果队列中包含句柄AWndHandle,将其删除;
a3.2.将句柄压入StartQueue队列首部;
a4.启动一个工作线程MonitorAThread,对AHandle进行监控;
a5.使用AWndHandle控制管理窗口的激活、关闭、最大化、最小化;
a6.启动其它业务软件时,执行与a1~a5相同步骤;
b.当其中一个业务软件A正常或异常退出时,顺序执行以下步骤:
b1.正常关闭进程AProcess;若为异常退出,则从b2步骤开始执行;
b2.监控进程句柄AHandle的工作线程MonitorAThread被激发;
b2.1.在StartQueue队列中查找AWndHandle,将其删除;
b2.2.获取StartQueue队列顶部的窗口句柄,将该句柄设为BWndHandle,将窗口激活;
b2.3.清理资源后,线程MonitorAThread退出;
b3.关闭其它业务软件时,执行与b1~b2.3.相同步骤;
c.当关闭整个系统时:
c1:依次遍历StartQueue队列中各个元素;
c2:通过各个元素中存储的窗口句柄,关闭各个业务软件窗口;
c3:清理资源后,进程退出。
本发明在启动业务软件后,记录进程句柄,并以其为特征获取进程主窗口的句柄,通过监视进程的句柄捕获到进程退出的时机,通过进程主窗口句柄对窗口进行激活、最大化、最小化、关闭等操作,无需受控窗口提供其具体窗口信息,更无需向业务软件进程植入代码,因而相对于现有技术具有更好的适应性。
具体实施方式
一种基于进程标识的软件窗口全生命周期管理方法,设系统集成的多个业务软件分别为A,B,...,Z,则:
a.当其中一个业务软件A启动时,顺序执行以下步骤:
a1.业务应用软件A如果启动成功,其所在的进程AProcess的句柄为AHandle,否则,控制权返回至人机界面,等待用户操作;
a2.采用进程句柄匹配的算法,对当前桌面的顶层窗口进行遍历;
a2.1.获取当前桌面的顶层窗口集合;
a2.2.遍历顶层窗口集合,将该窗口所在的进程句柄与AHandle进行匹配;
a2.3.如果:两句柄相等,则该窗口即是AProcess的主窗口;
a2.4.否则:转至a2.1步骤继续遍历;
a3.获取AProcess的主窗口句柄AWndHandle,将其放入StartQueue队列中保存;
a3.1.如果队列中包含句柄AWndHandle,将其删除;
a3.2.将句柄压入StartQueue队列首部;
a4.启动一个工作线程MonitorAThread,对AHandle进行监控;
a5.使用AWndHandle控制管理窗口的激活、关闭、最大化、最小化;
a6.启动其它业务软件时,执行与a1~a5相同步骤;
b.当其中一个业务软件A正常或异常退出时,顺序执行以下步骤:
b1.正常关闭进程AProcess;若为异常退出,则从b2步骤开始执行;
b2.监控进程句柄AHandle的工作线程MonitorAThread被激发;
b2.1.在StartQueue队列中查找AWndHandle,将其删除;
b2.2.获取StartQueue队列顶部的窗口句柄,将该句柄设为BWndHandle,将窗口激活;
b2.3.清理资源后,线程MonitorAThread退出;
b3.关闭其它业务软件时,执行与b1~b2.3.相同步骤;
c.当关闭整个系统时:
c1:依次遍历StartQueue队列中各个元素;
c2:通过各个元素中存储的窗口句柄,关闭各个业务软件窗口;
c3:清理资源后,进程退出。

Claims (1)

1.一种基于进程标识的软件窗口全生命周期管理方法,设系统集成的多个业务软件分别为A,B,…,Z,则:
a.当其中一个业务软件A启动时,顺序执行以下步骤:
a1.业务应用软件A如果启动成功,其所在的进程AProcess的句柄为AHandle,否则,控制权返回至人机界面,等待用户操作;
a2.采用进程句柄匹配的算法,对当前桌面的顶层窗口进行遍历;
a2.1.获取当前桌面的顶层窗口集合;
a2.2.遍历顶层窗口集合,将该窗口所在的进程句柄与AHandle进行匹配;
a2.3.如果:两句柄相等,则该窗口即是AProcess的主窗口;
a2.4.否则:转至a2.1步骤继续遍历;
a3.获取AProcess的主窗口句柄AWndHandle,将其放入StartQueue队列中保存;
a3.1.如果队列中包含句柄AWndHandle,将其删除;
a3.2.将句柄压入StartQueue队列首部;
a4.启动一个工作线程MonitorAThread,对AHandle进行监控;
a5.使用AWndHandle控制管理窗口的激活、关闭、最大化、最小化;
a6.启动其它业务软件时,执行与a1~a5相同步骤;
b.当其中一个业务软件A正常或异常退出时,顺序执行以下步骤:
b1.正常关闭进程AProcess;若为异常退出,则从b2步骤开始执行;
b2.监控进程句柄AHandle的工作线程MonitorAThread被激发;
b2.1.在StartQueue队列中查找AWndHandle,将其删除;
b2.2.获取StartQueue队列顶部的窗口句柄,将该句柄设为BWndHandle,将窗口激活;
b2.3.清理资源后,线程MonitorAThread退出;
b3.关闭其它业务软件时,执行与b1~b2.3.相同步骤;
c.当关闭整个系统时:
c1:依次遍历StartQueue队列中各个元素;
c2:通过各个元素中存储的窗口句柄,关闭各个业务软件窗口;
c3:清理资源后,进程退出。
CN201210552577.4A 2012-12-19 2012-12-19 一种基于进程标识的软件窗口全生命周期管理方法 Active CN103064704B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210552577.4A CN103064704B (zh) 2012-12-19 2012-12-19 一种基于进程标识的软件窗口全生命周期管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210552577.4A CN103064704B (zh) 2012-12-19 2012-12-19 一种基于进程标识的软件窗口全生命周期管理方法

Publications (2)

Publication Number Publication Date
CN103064704A true CN103064704A (zh) 2013-04-24
CN103064704B CN103064704B (zh) 2015-11-25

Family

ID=48107341

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210552577.4A Active CN103064704B (zh) 2012-12-19 2012-12-19 一种基于进程标识的软件窗口全生命周期管理方法

Country Status (1)

Country Link
CN (1) CN103064704B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105771241A (zh) * 2014-12-24 2016-07-20 北京奇虎科技有限公司 游戏窗口的匹配处理方法和装置
CN105771238A (zh) * 2014-12-24 2016-07-20 北京奇虎科技有限公司 游戏辅助功能的运行方法和装置
CN103853616B (zh) * 2014-02-20 2016-10-26 福建升腾资讯有限公司 一种实现云计算虚拟桌面自动关闭并释放硬件资源的方法
CN106547547A (zh) * 2016-10-18 2017-03-29 广州酷狗计算机科技有限公司 数据采集方法及装置
CN113326098A (zh) * 2021-06-11 2021-08-31 成都精灵云科技有限公司 支持kvm虚拟化与容器虚拟化的云管平台
CN114356435A (zh) * 2021-11-26 2022-04-15 中国航空无线电电子研究所 一种Qt界面集成方法和装置
CN115543152A (zh) * 2022-11-16 2022-12-30 北京时代亿信科技股份有限公司 确定文件状态的方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101996072A (zh) * 2009-08-21 2011-03-30 联想(北京)有限公司 一种操作系统的窗口管理方法及计算机
CN102662738A (zh) * 2012-03-15 2012-09-12 奇智软件(北京)有限公司 多进程管理方法与装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101996072A (zh) * 2009-08-21 2011-03-30 联想(北京)有限公司 一种操作系统的窗口管理方法及计算机
CN102662738A (zh) * 2012-03-15 2012-09-12 奇智软件(北京)有限公司 多进程管理方法与装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103853616B (zh) * 2014-02-20 2016-10-26 福建升腾资讯有限公司 一种实现云计算虚拟桌面自动关闭并释放硬件资源的方法
CN105771241A (zh) * 2014-12-24 2016-07-20 北京奇虎科技有限公司 游戏窗口的匹配处理方法和装置
CN105771238A (zh) * 2014-12-24 2016-07-20 北京奇虎科技有限公司 游戏辅助功能的运行方法和装置
CN106547547A (zh) * 2016-10-18 2017-03-29 广州酷狗计算机科技有限公司 数据采集方法及装置
CN106547547B (zh) * 2016-10-18 2019-12-10 广州酷狗计算机科技有限公司 数据采集方法及装置
CN113326098A (zh) * 2021-06-11 2021-08-31 成都精灵云科技有限公司 支持kvm虚拟化与容器虚拟化的云管平台
CN113326098B (zh) * 2021-06-11 2023-11-14 成都精灵云科技有限公司 支持kvm虚拟化与容器虚拟化的云管平台
CN114356435A (zh) * 2021-11-26 2022-04-15 中国航空无线电电子研究所 一种Qt界面集成方法和装置
CN115543152A (zh) * 2022-11-16 2022-12-30 北京时代亿信科技股份有限公司 确定文件状态的方法及装置

Also Published As

Publication number Publication date
CN103064704B (zh) 2015-11-25

Similar Documents

Publication Publication Date Title
CN103064704A (zh) 一种基于进程标识的软件窗口全生命周期管理方法
CN102902583B (zh) 在挂起状态和执行状态下管理进程
CN103559514B (zh) 一种即时的自助发卡方法及终端
WO2014022320A3 (en) Monitoring, diagnosing and optimizing gas lift operations
CN104038373B (zh) 信息预警与自修复系统及方法
CN107239457A (zh) 数据归档方法及装置
CN104899274A (zh) 一种内存数据库高效远程访问方法
WO2011120452A3 (zh) 更新数据的方法和控制装置
CN103295296A (zh) 利用嵌入式主板控制门禁系统的方法和嵌入式主板
CN101887539A (zh) 一种按周期统计员工出勤情况的技术
CN102620948B (zh) 抽水蓄能机组故障智能分析方法及其系统
CN105306581A (zh) 一种基于路由器和云盘数据同步的方法
CN102063588A (zh) 一种计算机终端网络安全防护的控制方法和系统
CN103685233A (zh) 一种基于Windows内核驱动的木马监测方法
CN105718243A (zh) Erp系统中数据批量操作的方法和系统
CN103164602A (zh) 药房贵重、特殊药品管理方法
CN104408629A (zh) 网络购物监控方法、系统及包含该系统的终端设备
CN104699551B (zh) 一种数据恢复方法及云端服务器
CN104360899B (zh) 一种进程管理系统及管理方法
CN104123205B (zh) 一种检测cpu超频工作状态的方法及装置
CN102737184A (zh) 一种安全显示自定义信息的方法
CN109655647A (zh) 一种电能表的异常事件记录方法
CN103886413A (zh) 一种基于云计算的动物防疫信息监管方法
CN102638365B (zh) 一种网管海量设备自动发现的实现方法
CN103747085A (zh) 云计算操作系统下一种存储资源调度算法

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