易语言通过进程名称获取进程ID 您所在的位置:网站首页 易语言获取进程 易语言通过进程名称获取进程ID

易语言通过进程名称获取进程ID

2024-07-16 12:08| 来源: 网络整理| 查看: 265

通过系统映像的名称来获取进程的PID,有了PID就可以通过(进程_ID取窗口句柄) 获取窗口句柄,有了句柄就可以大漠后台绑定窗口,所以最终目的还是通过进程名称来获取进程所在窗口的句柄,用来窗口的绑定操作。

用到的API 1、CreateToolhelp32Snapshot(创建进程快照) 2、Process32First(取第一个进程) 3、Process32Next(取下一个进程) 4、CloseHandle(关闭一个内核对象)

511遇见易语言模块API教程

 

自定义数据类型

进程信息列表(PROCESSENTRY32)

.版本 2 .数据类型 进程信息列表, , 公开     .成员 dwSize, 整数型, , , 1 // 结构大小;     .成员 cntUsage, 整数型, , , 2 // 此进程的引用计数;     .成员 进程ID, 整数型, , , 3 // 进程ID;     .成员 th32DefaultHeapID, 整数型, , , 4 // 进程默认堆ID;     .成员 th32ModuleID, 整数型, , , 5  // 进程模块ID;     .成员 cntThreads, 整数型, , , 6 // 此进程开启的线程计数     .成员 th32ParentProcessID, 整数型, , , 7 // 父进程ID;     .成员 pcPriClassBase, 整数型, , , 8  // 线程优先权;     .成员 dwFlags, 整数型, , , 9 // 保留;     .成员 进程名称, 字节型, , "256", 10 // 进程全名; PROCESSENTRY32 结构如下: typedef struct tagPROCESSENTRY32 { DWORD dwSize; // 结构大小; DWORD cntUsage; // 此进程的引用计数; DWORD th32ProcessID; // 进程ID; DWORD th32DefaultHeapID; // 进程默认堆ID; DWORD th32ModuleID; // 进程模块ID; DWORD cntThreads; // 此进程开启的线程计数; DWORD th32ParentProcessID;// 父进程ID; LONG pcPriClassBase; // 线程优先权; DWORD dwFlags; // 保留; WCHAR szExeFile[MAX_PATH]; // 进程全名; } PROCESSENTRY32;

 进程名取ID  

.版本 2 .子程序 进程_名取ID, 整数型, 公开, 通过进程影像名称来获取进程ID,失败返回 0 .参数 进程名, 文本型, , 要取的进程的名称 .参数 是否区分大小写, 逻辑型, 可空, 为空默认不区分大小写,真为区分大小写 .局部变量 进程快照, 整数型 .局部变量 局_进程信息, 进程信息列表 .局部变量 进程句柄, 整数型 ' 参数选2 表示:在快照中包含系统中所有的进程。 进程快照 = CreateToolhelp32Snapshot (2, 0) .如果真 (进程快照 = 0) 返回 (0) .如果真结束 ' 初始化进程信息列表 局_进程信息.dwSize = 512 ' 获取第一个进程句柄 进程句柄 = Process32First (进程快照, 局_进程信息) .判断开始 (是否区分大小写) .判断循环首 (进程句柄 ≠ 0) .如果真 (到文本 (局_进程信息.进程名称) = 进程名) CloseHandle (进程快照) 返回 (局_进程信息.进程ID) .如果真结束 进程句柄 = Process32Next (进程快照, 局_进程信息) .判断循环尾 () .默认 .判断循环首 (进程句柄 ≠ 0) .如果真 (到小写 (到文本 (局_进程信息.进程名称)) = 到小写 (进程名)) CloseHandle (进程快照) 返回 (局_进程信息.进程ID) .如果真结束 进程句柄 = Process32Next (进程快照, 局_进程信息) .判断循环尾 () .判断结束 CloseHandle (进程快照) 返回 (0)

 CreateToolhelp32Snapshot(创建进程快照) 

CreateToolhelp32Snapshot可以通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照。

.版本 2 .DLL命令 CreateToolhelp32Snapshot, 整数型, "KERNEL32.DLL", "CreateToolhelp32Snapshot", , 进程_取ID数组 创建一个进程的快照调用成功,返回快照的句柄 .参数 dwFlags, 整数型, , //用来指定"快照"中需要返回的对象 .参数 th32ProcessID, 整数型, , //一个进程ID号,用来指定要获取哪一个进程的快照,当获取系统进程列表或获取 当前进程快照时可以设为0

函数原型:

HANDLE WINAPI CreateToolhelp32Snapshot( DWORD dwFlags, //用来指定“快照”中需要返回的对象,可以是TH32CS_SNAPPROCESS等 DWORD th32ProcessID //一个进程ID号,用来指定要获取哪一个进程的快照,当获取系统进程列表或获取 当前进程快照时可以设为0 );

参数: 

 dwFlags 指定快照中包含的系统内容,这个参数能够使用下列数值(常量)中的一个或多个。 TH32CS_INHERIT(0x80000000) - 声明快照句柄是可继承的。 TH32CS_SNAPALL - 在快照中包含系统中所有的进程和线程。 TH32CS_SNAPHEAPLIST(0x00000001) - 在快照中包含在th32ProcessID中指定的进程的所有的堆。 TH32CS_SNAPMODULE(0x00000008) - 在快照中包含在th32ProcessID中指定的进程的所有的模块。 TH32CS_SNAPPROCESS(0x00000002) - 在快照中包含系统中所有的进程。 TH32CS_SNAPTHREAD(0x00000004) - 在快照中包含系统中所有的线程。 H32CS_SNAPALL = (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)th32ProcessID 指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了TH32CS_SNAPHEAPLIST或者TH32CS_SNAPMODULE后才有效,在其他情况下该参数被忽略,所有的进程都会被快照。返回值: 解释 调用成功,返回快照的句柄,调用失败,返回INVALID_HANDLE_VALUE 。 备注: 使用GetLastError函数查找该函数产生的错误状态码。 

 Process32First(取第一个进程) 

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

.版本 2 .DLL命令 Process32First, 整数型, "KERNEL32.DLL", "Process32First", 公开, 进程_取ID数组 获得第一个进程的句柄。 .参数 hSnapshot, 整数型, , CreateToolhelp32Snapshot返回进程快照的句柄 .参数 lppe, 进程信息列表

Process32Next(取下一个进程) 

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

.版本 2 .DLL命令 Process32Next, 整数型, "KERNEL32.DLL", "Process32Next", , 进程_取ID数组 获得下一个进程的句柄。 .参数 hSnapshot, 整数型, , CreateToolhelp32Snapshot返回进程快照的句柄 .参数 lppe, 进程信息列表

CloseHandle(关闭一个内核对象)

CloseHandle包括文件、文件映射、进程、线程、安全和同步对象等。涉及文件处理时,这个函数通常与vb的close命令相似。应尽可能的使用close,因为它支持vb的差错控制。 

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

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有