通过系统映像的名称来获取进程的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.参数 对象句柄, 整数型, , 欲关闭的一个对象的句柄;

易语言通过进程名称获取进程ID相关推荐

  1. 根据进程名称获取进程id

    # -*- conding:utf-8-*- import subprocess def getpid_windows(process_name):     """利用c ...

  2. 易语言制作大漠模块API进程ID取窗口句柄

    进程_ID取窗口句柄 是多线程控制游戏窗口必须的命令,我们要多线程绑定多个游戏窗口,必须取得多个窗口的句柄,他们的进程名称是一样的,但窗口句柄不一样. 第九课511遇见易语言大漠模块制作API进程_I ...

  3. 易语言取c盘文件夹中的文件被占用,易语言检测文件被哪个进程占用的代码

    易语言检测文件被哪个进程占用的代码 检测文件占用的代码 此功能需要加载贝贝吧模块6.6 .版本 2 .支持库 eAPI .程序集 窗口程序集_启动窗口 .子程序 _查询按钮_被单击 .局部变量 进程名 ...

  4. 易语言制作大漠模块API进程结束

    当我们启动多线程多窗口多任务时, 我们要关闭退出游戏,需要一个一个的手动结束,非常非常麻烦,,主要是通过API实现循环结束游戏进程,从而实现一键关闭游戏,一键结束销毁进程. 第十课511遇见易语言大漠 ...

  5. Python获取磁盘使用信息,python获取GPU信息,python根据进程号获取进程信息,pynvml 获取GPU信息,psutil 获取进程信息,系统信息等

    一.工具:psutil模块 psutil是一个跨平台模块,试用相应方法可以直接获取计算机CPU,内存,磁盘,网络等资源使用情况:可以使用我们学习知识与这模块用来做系统监控,性能分析:如果大家熟悉Lin ...

  6. android 指定资源id,Android 通过名称获取资源ID

    当我们获取网络数据的时候,解析之后往往都是一个字符串,而不是资源id,所有我们没有办法直接使用,只能通过名称来获取到资源id, package com.example.administrator.de ...

  7. c语言代码实现杀掉excel进程,C# 获取进程退出代码的实现示例

    我需要写一个程序,让这个程序知道另一个程序是否正常退出,于是就需要获取这个进程的退出代码 在程序如果需要手动退出,可以设置当前的退出代码 static void Main(string[] args) ...

  8. linux pidof 进程名称查进程id

    pidof命令用于查找指定名称的进程的进程号id号. 语法 pidof(选项)(参数) 选项 -s:仅返回一个进程号: -c:仅显示具有相同"root"目录的进程: -x:显示由脚 ...

  9. 通过Docker进程pid获取容器id

    虽然Docker是通过namespace隔离技术实现容器间进程的隔离,但在运行Docker的主机中,Docker容器内的进程与主机内运行的进程是在同一个namespace(假设叫A)的.虽然在Dock ...

最新文章

  1. 基于Springboot实现医院HIS信息管理系统
  2. angular2 学习二 最简单的模板
  3. CentOS7安装EPEL源
  4. MySQL数据库安装与配置详解
  5. java 访问路径_java获取项目访问路径的相关方法
  6. Vrep 中的运动规划1(主要是基于RRT算法)
  7. Activiti工作流学习笔记01
  8. HDOJ--1599--find the mincost route(floyd+最小环)
  9. php选择不同店发送不同邮件,php – WooCommerce电子邮件通知:不同城市的不同电子邮件收件人...
  10. 关羽卖枣,张飞杀猪,二人何以有“盖世武功”?
  11. python 宏观经济_Sargent数量经济:回归分析与Python
  12. http 502错误
  13. 苹果计算机符号怎么打开,Mac电脑如何输入command(⌘)、option(⌥)、shift(⇧)等特殊符号...
  14. 计算机启动进入不了桌面图标,电脑开机不显示桌面图标怎么办,开机桌面图标不显示解决办法...
  15. html5数独游戏设计,数独游戏的前端实现
  16. 【甲午大决战】2014年互联网10大战争
  17. 王者荣耀服务器未响应 小米,10月23日小米手机更新王者荣耀失败 小米更新不了新赛季怎么办...
  18. 东北电力大学计算机学院教务处,2020年东北电力大学计算机学院初试
  19. 新走遍美国(一)---故事梗概
  20. 「GoCN酷Go推荐」后现代时代远程办公网络问题的golang开源解决方案 —— PairMesh...

热门文章

  1. pandas一阶差分
  2. 计算机专业双一流排名大专,计算机专业双一流高校名单-双一流大学计算机专业排名...
  3. 一些IEC60730 classB认证踩过的坑
  4. 0050-垃圾回收器
  5. 构建自己的网站(一)——uWSGI+Django实现显示图片点击更新
  6. Python数据分析实战学习与分享(一)
  7. subst映射盘符挂载盘符之后从我的电脑里看不到挂载的盘符但是从shell可以进入路径
  8. 公网域名访问内网IP跨域
  9. 微软CEO:堪比工业革命,这辈子第一次见这么大的技术浪潮!
  10. 水泵smart200编程_基于S7-200 SMART PLC的超滤系统设计