易语言枚举进程所有句柄

资源介绍:

.版本 2 .支持库 iext .程序集 窗口程序集_窗口1, , , ' 本源码来自三叶资源网(www.sanye.cx) .程序集变量 cpid, 整数型 .子程序 _窗口1_创建完毕 cpid = GetCurrentProcessId () 编辑框1.内容 = 到文本 (cpid) .子程序 _按钮1_被单击 .局部变量 pid, 整数型 .局部变量 list, List .局部变量 i, 整数型 .局部变量 info, SYSTEM_HANDLE_INFORMATION .局部变量 handle, 整数型 .局部变量 hProcess, 整数型 .局部变量 index, 整数型 超级列表框1.全部删除 () pid = 到整数 (编辑框1.内容) list = 获取系统所有句柄信息 () .如果真 (pid ≠ cpid) hProcess = OpenProcess (#PROCESS_ALL_ACCESS, 假, pid) .如果真结束 .变量循环首 (0, list.Count () - 1, 1, i) RtlMoveMemory_SYSTEM_HANDLE_INFORMATION (info, list.GetItem (i), #sizeof_SYSTEM_HANDLE_INFORMATION) .如果真 (info.ProcessId = pid) .如果 (pid = cpid) handle = info.Handle .否则 DuplicateHandle (hProcess, info.Handle, GetCurrentProcess (), handle, #DUPLICATE_SAME_ACCESS, 假, #DUPLICATE_SAME_ACCESS) .如果结束 index = 超级列表框1.插入表项 (, 获取句柄类型 (handle), , , , ) 超级列表框1.置标题 (index, 1, 获取句柄名 (handle)) 超级列表框1.置标题 (index, 2, 到文本 (info.Handle)) 超级列表框1.置标题 (index, 3, 到文本 (info.Object)) 超级列表框1.置标题 (index, 4, 到文本 (info.ObjectTypeNumber)) 超级列表框1.置标题 (index, 5, 到文本 (获取句柄引用数 (handle))) .如果真 (pid ≠ cpid) CloseHandle (handle) .如果真结束 .如果真结束 .变量循环尾 () .如果真 (hProcess ≠ 0) CloseHandle (hProcess) .如果真结束 .子程序 获取系统所有句柄信息, List .局部变量 len, 整数型 .局部变量 buffer, 字节集 .局部变量 status, 整数型 .局部变量 list, List len = 16534 ' 0x4096 .循环判断首 () buffer = 取空白字节集 (len) status = ZwQuerySystemInformation (#SystemHandleInformation, buffer, len, 0) .如果真 (status = #STATUS_INFO_LENGTH_MISMATCH) len = len + 16534 ' 0x4096 .如果真结束 .循环判断尾 (status = #STATUS_INFO_LENGTH_MISMATCH) list.List (buffer, #sizeof_SYSTEM_HANDLE_INFORMATION) 返回 (list) .子程序 获取句柄名, 文本型 .参数 handle, 整数型 .局部变量 size, 整数型 .局部变量 unicode, 字节集 .局部变量 ansi, STRING .局部变量 str, 文本型 .如果 (ZwQueryObject (handle, #ObjectTypeInformation, unicode, 0, size) ≠ #STATUS_INVALID_HANDLE) unicode = 取空白字节集 (size) ZwQueryObject (handle, #ObjectNameInformation, unicode, size, 0) RtlUnicodeStringToAnsiString (ansi, unicode, 真) str = 指针到文本 (ansi.Buffer) RtlFreeAnsiString (ansi) .否则 str = “无法获取” .如果结束 返回 (str) .子程序 获取句柄类型, 文本型 .参数 handle, 整数型 .局部变量 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) .子程序 获取句柄引用数, 整数型 .参数 handle, 整数型 .局部变量 state, SYSTEM_HANDLE_STATE ZwQueryObject_SYSTEM_HANDLE_STATE (handle, #ObjectBasicInformation, state, #sizeof_SYSTEM_HANDLE_STATE, 0) 返回 (state.ReferenceCount - 1)

资源作者:

资源下载:

相关文件下载地址
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!

易语言枚举进程所有句柄》有0个想法

回复 易语言 取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注