第八课511遇见易语言大漠模块制作API进程_取ID数组

Win下查看进程

1、最简单的查看进程的办法是使用Windows任务管理器,可以在任务栏上单击右键打开,也可以通过Ctrl+Alt+delete的快捷键唤出。
2、窗口中输入tasklist并回车就可以看到进程列表。
------------------------------------------------------------------------------------
进程_取ID数组
用到以下API函数,分别介绍如下:

1、CreateToolhelp32Snapshot获得当前运行进程的快照

CreateToolhelp32Snapshot可以通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照。
返回值:
解释
调用成功,返回快照的句柄,调用失败,返回(INVALID_HANDLE_VALUE)表示无效的句柄值 。
备注:
使用GetLastError函数查找该函数产生的错误状态码。
注意,在Win NT中,要删除快照,使用CloseHandle函数;在Win CE中,要删除快照,使用CloseToolhelp32Snapshot函数。

 
.DLL命令 API_CreateToolhelp32Snapshot, 整数型, "KERNEL32.DLL", "CreateToolhelp32Snapshot",  
    .参数 dwFlags, 整数型, , 
.参数 th32ProcessID, 整数型, ,
----------------------------------------------------------------------------------------------
.版本 2
 
.DLL命令 CreateToolhelp32Snapshot, 整数型, , "CreateToolhelp32Snapshot", 公开, 创建进程快照
    .参数 falg, 整数型
    .参数 id, 整数型

2、process32First

是一个进程获取函数,当我们利用函数CreateToolhelp32Snapshot()获得当前运行进程的快照后,我们可以利用process32First函数来获得第一个进程的句柄。

3、Process32Next

是一个进程获取函数,当我们利用函数CreateToolhelp32Snapshot()获得当前运行进程的快照后,我们可以利用Process32Next函数来获得下一个进程的句柄。
process32First此函数往往和Process32Next
搭配使用,用来枚举当前系统快照相关的所有进程。
函数返回值:成功返回true,否则返回false.

4、API_Process32First

.DLL命令 API_Process32First, 整数型, "KERNEL32.DLL", "Process32First",  
    .参数 hSnapshot, 整数型, , 
.参数 lppe, LPPROCESSENTRY32, ,
-----------------------------------------------------------------------------
.版本 2
 
.DLL命令 Process32First, 整数型, , "Process32First", 公开, 取第一个进程
    .参数 h, 整数型
    .参数 p,进程信息列表
--------------------------------------------------------------------------------

5、API_Process32Next

.DLL命令 API_Process32Next, 整数型, "KERNEL32.DLL", "Process32Next",  
    .参数 hSnapshot, 整数型, , 
.参数 lppe, LPPROCESSENTRY32, ,
.版本 2
 
.DLL命令 Process32Next, 整数型, , "Process32Next", 公开, 取下一个进程
    .参数 h, 整数型
    .参数 p,进程信息列表
--------------------------------------------------------------------------------------

注意:两个API函数共同的参数:参数说明

hSnapshot

从CreateToolhelp32Snapshot 返回的句柄。
lppe
指向PROCESSENTRY32结构的指针。

6、LPPROCESSENTRY32

PROCESSENTRY32 结构如下:

1) dwSize; // 结构大小;整数型2)cntUsage; // 此进程的引用计数;整数型3) th32ProcessID; // 进程ID; 整数型4) th32DefaultHeapID; // 进程默认堆ID;整数型5)th32ModuleID; // 进程模块ID;整数型6)   cntThreads; // 此进程开启的线程计数;整数型7)   th32ParentProcessID;// 父进程ID;整数型8)  pcPriClassBase; // 线程优先权;整数型9)  dwFlags; // 保留;整数型10)  WCHAR szExeFile[MAX_PATH]; // 进程全名;字节型(256)

7、自建数据类型(PROCESSENTRY32)

.版本 2
.数据类型 进程信息列表, 公开
    .成员 dwSize, 整数型, , , 1
    .成员 cntUsage, 整数型, , , 2
    .成员 进程ID, 整数型, , , 3
    .成员 th32DefaultHeapID, 整数型, , , 4
    .成员 th32ModuleID, 整数型, , , 5
    .成员 cntThreads, 整数型, , , 6
    .成员 th32ParentProcessID, 整数型, , , 7
    .成员 pcPriClassBase, 整数型, , , 8
    .成员 dwFlags, 整数型, , , 9
.成员 进程名称, 字节型, , "256", 10

8、CloseHandle

关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等。在CreateThread成功之后会返回一个hThread的handle,且内核对象的计数加1,CloseHandle之后,引用计数减1,当变为0时,系统删除内核对象。
若在线程执行完之后,没有调用CloseHandle,在进程执行期间,将会造成内核对象的泄露,相当于句柄泄露,但不同于内存泄露,这势必会对系统的效率带来一定程度上的负面影响。但当进程结束退出后,系统会自动清理这些资源。

.版本 2
 
.DLL命令 CloseHandle, 逻辑型, "kernel32", "CloseHandle", 公开, 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等。涉及文件处理时,这个函数通常与vb的close命令相似。应尽可能的使用close,因为它支持vb的差错控制。注意这个函数使用的文件句柄与vb的文件编号是完全不同的  非零表示成功,零表示失败。会设置GetLastError
    .参数 对象句柄, 整数型, , 欲关闭的一个对象的句柄;

发布日期:

所属分类: 易语言 标签: