|
分享源码
界面截图: |
|
是否带模块: |
纯源码 |
备注说明: |
- |
本帖最后由 1185384801 于 2018-7-2 16:03 编辑
镇楼图:
电脑管家的文件文件占用扫描大家一个是耳熟能详吧?
可是(关键来了),有谁真正用易语言做出过这个文件扫描来吗?
有人可能会说:啊,百度上一堆啊
但是你自己去试试,那个可以使用?
So,亲身下河知深浅
我便做了一个文件扫描工具
先来说说文件占用
一般常用的有2种
1、DLL或EXE打开占用
这个大家一个知道吧,EXE或DLL被打开后就会处于占用状态
所以这个只需要扫描一下进程的DLL模块就OK
但是还有一种占用:
2、打开文件的占用
这个也是比较常见的占用方式
但是这个就无法有枚举进程DLL这么简单了
主要是利用CreateFile创建一个文件的句柄
所以只需要扫描句柄就可以
但是
你知道怎么扫描吗?
那么今天的重点就来了:扫描进程的File句柄
那么就需要利用一个非常重要但是用法很少的函数了:ZwQueryObject
直接商店代码还直观点: 变量名 | 类 型 | 静态 | 数组 | 备 注 | size | 整数型 | | | unicode | 字节集 | | | ansi | STRING | | | str | 文本型 | | | 如果 (ZwQueryObject (handle, #ObjectTypeInformation, unicode, 0, size ) ≠ #STATUS_INVALID_HANDLE ) unicode = 取空白字节集 (size )ZwQueryObject (handle, #ObjectTypeInformation, unicode, size, 0 ) RtlUnicodeStringToAnsiString (ansi, unicode, 真) str = 指针到文本 (ansi.Buffer ) RtlFreeAnsiString (ansi )str = “无法获取” 返回 (str) 这是获取句柄的类型,这个超级重要,file这个名字就是从这里取到的
除了取到句柄名字,还需要对取到的句柄路径进行Dos转换,就相当于把路径中类似于 \Device\HarddiskVolume1 的部分用 C:、D:等对应代替
\Device\HarddiskVolume是系统的一个路径用法,但是我们需要转换成我们常用的路径, 就需要进行DOS路径转换
最后把一堆代码拼起来就可以用了!!
至于更多的解释?
那你就看代码理解吧!!
最后还是那句老话:源码回复下载!!
最后说一句:如果你觉得可以的话,请:
一下(点2下又不会扣分),源码回复下载!!
扫描进程占用.zip
(712.67 KB, 下载次数: 714)
|
评分
-
查看全部评分
|