通过进程快照枚举所有进程,关于进程快照,在Delphi5开发人员指南中有说明,当然也可以百度一下用法。

使用进程快照CreateToolhelp32Snapshot,必须uses TlHelp32单元。

从快照中得到的进程ID,可以获得进程的很多信息,这里不多说,网上有很多资料,具体需要什么可以百度查一下。

以这里记录一下,方便以后查找

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls; type
TForm1 = class(TForm)
Memo1: TMemo;
Btn1: TButton;
procedure Btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} uses
TlHelp32; // tagPROCESSENTRY32 = packed record
// dwSize: DWORD;
// cntUsage: DWORD;
// th32ProcessID: DWORD; // 进程ID
// th32DefaultHeapID: DWORD;
// th32ModuleID: DWORD; // associated exe
// cntThreads: DWORD;
// th32ParentProcessID: DWORD; // this process's parent process
// pcPriClassBase: Longint; // Base priority of process's threads
// dwFlags: DWORD;
// szExeFile: array[0..MAX_PATH - 1] of Char;// Path
// end;
// TProcessEntry32 = tagPROCESSENTRY32; procedure TForm1.Btn1Click(Sender: TObject);
var
hSnap: THandle;
vPE: TProcessEntry32;
sTmp: AnsiString;
begin
Memo1.Lines.Clear;
hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, );
vPE.dwSize := SizeOf(TProcessEntry32);
if Process32First(hSnap, vPE) then // Process32First找到的肯定是 [System Process] 不管
begin
//如果 Process32First 函数执行成功 后使用 Process32Next 读取每个进程的信息
while Process32Next(hSnap, vPE) do
begin
sTmp := PAnsiChar(@vPE.szExeFile[]);
Memo1.Lines.Add(sTmp);
end;
end;
CloseHandle(hSnap);
end; end.

效果图如下:

by lin 2016-11-13

Delphi 枚举所有进程的更多相关文章

  1. Windows下如何枚举所有进程

    要编写一个类似于 Windows 任务管理器的软件,首先遇到的问题是如何实现枚举所有进程.暂且不考虑进入核心态去查隐藏进程一类的,下面提供几种方法.请注意每种方法的使用局限,比如使用这些 API 所需 ...

  2. Win8下枚举任意进程的句柄表。。。(VB6 Code)

    添加一个Command1.一个List1,代码: Private Type PROCESS_HANDLE_TABLE_ENTRY_INFO HandleValue As Long HandleCoun ...

  3. 通过Xlib枚举指定进程下所有窗体

    在windows系统下如果想要枚举指定进程的窗体,我们可以通过EnumWindows加上自己实现的回调函数进行实现,那么在linux下该如何做呢? 其实也很简单,在linux下,我们可以通过xlib中 ...

  4. Delphi获取其它进程窗口句柄的3种方法

    本文主要跟大家介绍Delphi中获取其它进程的窗口句柄,在Delphi中获取其它进程的窗口句柄,绝大部分人首先想到的会使用:FindWindow或者用GetWindow来遍历查找,如: handle ...

  5. Delphi中上指定进程(进程名)

    procedure KillProcess(ExeName: string); const PROCESS_TERMINATE = $0001; //进程的PROCESS_TERMINATE访问权限 ...

  6. delphi中获得进程列表或想要的进程(枚举进程、遍历进程)

    一个常见的编程任务是枚举所有运行的"应用程序".Windows 任务管理器就是一个很好的例子.它用两种方式列出"应用程序".任务管理器的第一个选项卡列出桌面上的 ...

  7. Delphi 通得进程ID获取主窗口句柄

    只知道进程ID,获取主窗口句柄的方法如下: 通过EnumWindows枚举所有窗口 使用GetWindowThreadProcessID,通过窗口句柄获取进程ID 比便获取的进程ID与当前已知的进程I ...

  8. delphi 枚举类型

    枚举类型定义了一系列有序值的集合.枚举变量就是从这个既定的集合中取某个值.集合中的有序值可以称为元素,元素一般从0开始索引(也就是元素的顺序号). 定义一个枚举类型,采用以下的格式: type typ ...

  9. RING3级下枚举用户进程的基本姿势

    简述 Ring3用户态下查看进程信息的基本方法 代码样例 #include <cstdio> #include <iostream> #include <cstdlib& ...

随机推荐

  1. 在一般处理程序清理cookie

    清理cookie在ashx里面很奇怪,因为直接设置过期时间并不能成功,cookie还是会存在.所以需要添加一个同名的Cookie设置过期时间覆盖 HttpCookie cookie = null; / ...

  2. C# Session操作

    Session.Abandon();//清除全部Session//清除某个SessionSession["UserName"] = null;Session.Remove(&quo ...

  3. 开源日志收集Exceptionless简单使用

    这两天在研究一个开源的日志收集工具Exceptionless 官网地址:https://exceptionless.com/GitHub地址:https://github.com/exceptionl ...

  4. WPF WindowStyle为None

    当WindwoStyle为None时 窗口会出现边框,不会完全覆盖窗口 修改办法: 使用AllowsTransparency="True"即可

  5. TOJ1398正方形的编成 或者 POJ2362

    #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> ...

  6. 2018-2019-2 网络对抗技术 20165219 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165219 Exp3 免杀原理与实践 实验任务 1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用sh ...

  7. WEB H5 JS QRCode二维码快速自动生成

    万能的GITHUB: https://github.com/davidshimjs/qrcodejs HTML: <div class="col-xs-10 col-xs-offset ...

  8. 洛谷P4250 [SCOI2015]小凸想跑步(半平面交)

    题面 传送门 题解 设\(p\)点坐标为\(x_p,y_p\),那么根据叉积可以算出它与\((i,i+1)\)构成的三角形的面积 为了保证\(p\)与\((0,1)\)构成的面积最小,就相当于它比其它 ...

  9. Maven镜像更换为阿里云中央仓库(精)

    前言 maven仓库默认在国外,使用难免很慢,尤其是下载依赖的时候,换为国内镜像,让你感受飞一般的感觉.国内支持maven镜像的有阿里云,开源中国等,这里换为阿里云的. 更换 修改maven配置文件s ...

  10. [转] Cisco路由器DNS配置

    禁用Web服务 Cisco路由器还在缺省情况下启用了Web服务,它是一个安全风险.如果你不打算使用它,最好将它关闭.举例如下: Router(config)# no ip http server 配置 ...