windows是计算机与用户,一种基于windows系统的保存与恢复计算机中用户工作状态的方法...

一种基于windows系统的保存与恢复计算机中用户工作状态的方法

【技术领域】

[0001]本发明属于计算机软件领域,具体是指保存计算机中用户工作状态到磁盘中,然后在需要时进行恢复的方法。

【背景技术】

[0002]信息时代的到来,使得计算机等终端设备在人们生活中的作用越来越大,人们对于计算机的依赖越来越强烈。无论是在办公室工作,还是在家上网查阅资料、进行设计或写作,往往都需要收集较多的各方面的信息、使用较多的文档与应用来进行信息的整合与分析,以确保有一个高质量与全面的工作成果。日常生活工作中经常有这样的经验,打开了很多的文档、网页与应用进行相关的工作,但是因为各种原因要中断正在进行的工作,这时不得已只有关掉所有的文档、网页与应用,然后才去做其他事情,然而下次我们继续投入到未完成的工作时,又得找到一个个文档、网页与应用并将之打开,这必然会增加工作量与影响工作的效率,同时有可能因为各种原因影响工作情绪。

[0003]有鉴于此,本发明人针对现有的技术的迫切需求深入研究,并有本案产生。

【发明内容】

[0004]本发明所要解决的技术问题在于提供一种基于windows系统的保存与恢复计算机中用户工作状态的方法,使用户在使用计算机工作时,可以将用户当前的工作状态保存到磁盘中,待到需要时将之恢复,以提高工作的效率与节省时间。

[0005]本发明采用以下技术方案解决上述技术问题:

[0006]基于windows系统的保存与恢复计算机中用户工作状态的方法,包括如下过程:

[0007]第一阶段:收集并保存信息阶段,包括以下几个步骤:

[0008]步骤1:收集并保存打开的文档信息,具体包括:

[0009]步骤11:导出 ZwQuerySystemlnformat1n 和 ZwQuerylnformat1nFile 两个DDK函数。装载ntdll.dll动态链接库,导出ZwQuerySystemlnformat1n和ZwQuerylnformat1nFile 两个 DDK 函数。

[0010]步骤12:获取文件句柄的对象类型。

[0011]步骤12.1:打开空设备。调用CreateFile打开空设备NUL。

[0012]步骤12.2:获取文件句柄的对象类型。调用ZwQuerySystemlnformat1n函数获取系统中所有句柄信息,该函数返回一个包含所有句柄信息的链表,遍历链表找出句柄值等于步骤12.1空设备的句柄,且要求遍历的链表的当前句柄的进程ID等于当前进程ID。保存符合条件句柄的类型值。

[0013]步骤13:获取系统打开的所有文件句柄。调用ZwQuerySystemlnformat1n函数获取系统中所有句柄信息,该函数返回一个包含所有句柄信息的链表,遍历链表找出句柄类型等于步骤12的句柄类型的所有文件句柄,并将之保存到数组中。

[0014]步骤14:获取文件句柄所对应的文件名并判断保存。依次取出步骤13所获取的文件句柄,调用ZwQuerylnformat1nFile函数获取文件所对应的文件名,如果文件名的扩展名是 doc、docx、wps、xls、xlsx、et、ppt、pptx、dps、pdf 和 txt 等文档扩展名,就将该文件的路径及文件名保存起来写进磁盘。

[0015]步骤2:收集并保存系统运行的应用程序信息,具体包括:

[0016]步骤21:枚举窗口。调用EnumWindows函数枚举下一个窗口,如果枚举完,则转到步骤3。

[0017]步骤22:在枚举窗口的回调函数里判断当前窗口是否为一个独立的应用程序窗口。调用函数GetWindowLong获取窗口的属性,根据窗口的属性测试的窗口是否为独立应用程序窗口。如果不是转到步骤21。

[0018]步骤23:获取独立窗口应用程序的进程ID。调用GetWindowThreadProcessId获取窗口所对应的进程ID。

[0019]步骤24:获取系统所有运行的进程。调用CreateToolhelp32Snapshot函数对系统所有进程进行拍照。

[0020]步骤25:在步骤24所获取的进程列表里找出步骤23的进程,并保存进程名。

[0021]步骤26:获取步骤23的进程的加载的模块列表。调用函数CreateToolhelp32Snapshot对步骤23的进程加载的模块进行拍照。

[0022]步骤27:获取独立窗口应用程序的路径与文件名。枚举步骤26获取的模块列表,并找出当前模块名等于步骤25的进程名的模块,将该模块的路径信息保存起来。

[0023]步骤28:筛选步骤27得到的应用程序名并将筛选结果写进磁盘。对步骤27所得到的应用程序信息进行判断,如果应用程序为doc、docx、wps、xls、xlsx、et、ppt、pptx、dps、pdf和txt等文档对应的应用程序,转到步骤21,否则将应用程序路径及文件名存入磁盘,转到步骤21。

[0024]步骤3:收集并保存浏览器当前浏览的URL信息,具体包括:

[0025]步骤31:枚举所有窗口。调用EnumWindows函数枚举下一个窗口,如果枚举完,则结束运行。

[0026]步骤32:获取窗口的类名。调用getClassName函数获取窗口所对应的类名。

[0027]步骤33:确定当前窗口是何种浏览器。根据步骤32所获取的窗口类名确定当前窗口是否为某种指定的浏览器。如果不是,则转到步骤31。

[0028]步骤34:调用某种指定的的浏览器URL获取方法,获取所有浏览的URL并将之保存到磁盘。由于每种浏览器具体获取URL方法不相同,但基本原理是一样的。

[0029]步骤34.1:获取URL地址栏句柄。从顶层窗口开始,逐级调用FindWindowEx找到URL地址栏的句柄。每种浏览器关于URL地址栏控件的层次结构不一样,可以通过spy等工具软件逐级找到其父窗口的窗口类。

[0030]步骤34.2:获取当前标签的URL,如果与前面获取的URL —样则转到步骤31。调用SendMessage函数发送WM_GETTEXT消息给URL地址栏控件,获取URL。判断URL与之前获取的URL是否一样,是则表示已获取完浏览器所有的URL,同时转到步骤31。

[0031]步骤34.3:发送切换标签快捷键给浏览器切换标签,转到步骤34.2。调用SendMessage函数发送包含标签切换快捷键的WM_KEYD0WN消息给浏览器进行标签的切换,转到步骤34.2。

[0032]第二阶段:恢复文档、网页与应用阶段,包括以下几个步骤:

[0033]步骤1:打开第一阶段保存的文档,具体包括:

[0034]步骤11:从磁盘读取某个指定时间的工作状态中的文档信息。

[0035]步骤12:调用系统shellExecute函数用默认的应用程序打开保存的文档。

[0036]步骤2:运行第一阶段保存的应用,具体包括:

[0037]步骤11:从磁盘读取某个指定时间的工作状态中的应用程序信息。

[0038]步骤12:调用系统shellExecute函数运行保存的应用程序。

[0039]步骤3:打开第一阶段保存的URL,具体包括:

[0040]步骤11:从磁盘读取某个指定时间的工作状态中的URL信息。

[0041]步骤12:调用系统shellExecute函数用浏览器打开保存的URL。

[0042]本发明的优点在于:可以保存windows系统下用户所打开的文档、网页与应用信息至磁盘中,在需要时再从磁盘中读取出来并将之恢复,避免用户花费更多的时间与精力,将计算机恢复到工作状态,可以大大节省用户工作时间,提高工作效率,增加计算机使用的方便性与快捷性。

【附图说明】

[0043]下面参照附图结合实施例对本发明作进一步的描述。

[0044]图1是本发明软件主要步骤流程示意图。

[0045]图2是本发明收集并保存打开的文档信息步骤流程图。

[0046]图3是本发明收集并保存系统运行的应用程序信息步骤流程图。

[0047]图4是本发明收集并保存浏览器当前浏览的URL信息步骤流程图。

[0048]图5是本发明获取浏览器URL步骤流程图。

【具体实施方式】

[0049]如图1所示,基于windows系统的保存与恢复计算机中用户工作状态的方法,包括如下过程:

[0050]第一阶段:收集并保存信息阶段,包括以下几个步骤:

[0051]步骤1:收集并保存打开的文档信息,如图2所示,具体包括:

[0052]步骤11:导出 ZwQuerySystemlnformat1n 和 ZwQuerylnformat1nFile 两个DDK函数。装载ntdll.dll动态链接库,导出ZwQuerySystemlnformat1n和ZwQuerylnformat1nFile 两个 DDK 函数。

[0053]步骤12:获取文件句柄的对象类型。

[0054]步骤12.1:打开空设备。调用CreateFile打开空设备NUL。

[0055]步骤12.2:获取文件句柄的对象类型。调用ZwQuerySystemlnformat1n函数获取系统中所有句柄信息,该函数返回一个包含所有句柄信息的链表,遍历链表找出句柄值等于步骤12.1空设备的句柄,且要求遍历的链表的当前句柄的进程ID等于当前进程ID。保存符合条件句柄的类型值。

[0056]步骤13:获取系统打开的所有文件句柄。调用ZwQuerySystemlnformat1n函数获取系统中所有句柄信息,该函数返回一个包含所有句柄信息的链表,遍历链表找出句柄类型等于步骤12的句柄类型的所有文件句柄,并将之保存到数组中。

[0057]步骤14:获取文件句柄所对应的文件名并判断保存。依次取出步骤13所获取的文件句柄,调用ZwQuerylnformat1nFile函数获取文件所对应的文件名,如果文件名的扩展名是 doc、docx、wps、xls、xlsx、et、ppt、pptx、dps、pdf 和 txt 等,就将该文件的路径及文件名保存起来写进磁盘

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值