下通过系统快照实现进程管理
引言 每一个应用程序实例在运行起来后都会在当前系统下产生一个进程,大多数应用程序均拥有可视界面,用户可以通过标题栏上的关闭按钮关闭程序。但是也有为数不少的在后台运行的程序是没有可视界面的,对于这类应用程序用户只能通过CTRL+ALT+DEL热键呼出\"关闭程序\"对话框显示出当前系统进程列表,从中可以结束指定的任务。显然,该功能在一些系统监控类软件中还是非常必需的,其处理过程大致可以分为两步:借助系统快照实现对系统当前进程的枚举和根据枚举结果对进程进行管理。本文下面即将对此过程的实现进行介绍。
当前进程的枚举
谣言之所以流行 要对当前系统所有已开启的进程进行枚举,就必须首先获得那些加载到内存的进程当前相关状态信息。在Windows操作系统下,这些进程的当前状态信息不能直接从进程本身获取,系统已为所有保存在系统内存中的进程、线程以及模块等的当前状态的信息制作了一个只读副本--系统快照,用户可以通过对系统快照的访问完成对进程当前状态的检测。在具体实现时,系统快照句柄的获取是通过Win32 API函数CreateToolhelp32Snapshot()来完成的,通过该函数不仅可以获取进程快照,而且对于堆、模块和线程的系统快照同样可以获取。该函数原型声明如下:
HANDLE WINAPI CreateToolhelp32Snapshot(DWORD dwFlags,DWORD th32ProcessID); 其中,参数dwFlags:指定将要创建包含哪一类系统信息的快照句柄,本程序中只需要检索系统进程信息,因此可将其设置为TH32CS_SNAPPROCESS;函数第二个参数th32ProcessID`则指定了进程的标识号,当设置为0时指定当前进程。如果成功函数将返回一个包含进程信息的系统快照句柄。在得到快照句柄之后只能以只读的方式对其进行访问。至于对系统快照句柄的使用同普通对象句柄的使用并没有什么太大区别,在使用完之后也需要通过CloseHandle()函数将其销毁。
西安哪里专业治妇科成都治妇科医院哪好
中暑了怎么办吃什么
- 求人办事的时候,用好这三招,就算很难好处,同事也帮助你!
- 四川教师公招:甘孜招914人,医学系岗位占比99%
- 蒸红薯,不要直接上锅!教你“少1步多1步”,软绵香甜,不了水汽味
- 美国路易斯安那州一炼油厂发生氯气泄漏事件
- 韩国演员李准基确诊感染新冠肺炎,新剧《终于我的人生》停拍
- 华硕重炮手主板陪你畅玩国产魂系电脑游戏《临渊觉醒》
- 8岁女童吃这种水果急性中毒!夏天千万不想这样吃→
- 直击股东大会丨格林美董事长许开华:污水回收挣不到很多钱,但能“持续稳定增长“
- 蹭“元宇宙”热点概念?吉宏股份收上海证券交易所关注函
- 《设计》专访|吴欢龙:格力,“转回不限,设计无限”
- 持股至少一年,拉卡拉股东严琳违反承诺减持500万股公司股份,套现超9000万元
- 台湾女首富,只倚重国外人“瞧不起”大陆人,如今市值缩水97%