列举系统进程及其所调用的模块文件(Delphi XE2)

     原文:http://blog.csdn.net/iseekcode/article/details/4740168

    原文的代码可能适用于delphi7,我修改了一下,使它可以在delphi xe2下运行,效果还不错。

 

代码:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.StdCtrls,Tlhelp32;

type
  TForm1 = class(TForm)
    button1: TButton;
    TreeView1: TTreeView;
    Edit1: TEdit;
    procedure button1Click(Sender: TObject);
  private
    { Private declarations }
  public
  var

    ProcessList: Thandle;

    pe: TPROCESSENTRY32;

    node: TTreenode;

    processnumber: integer;

    { Public declarations }
    procedure ProcessEnum(Sender: TObject);
    procedure ModuleEnum(processid: Dword);

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.button1Click(Sender: TObject);
begin
  ProcessEnum(self);
end;

procedure TForm1.ModuleEnum(processid: Dword);

var

  ModuleList: Thandle;

  pm: TMODULEENTRY32;

begin

  ModuleList := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, processid);

  pm.dwSize := sizeof(TMODULEENTRY32);

  if module32first(ModuleList, pm)

  then
  begin

    TreeView1.Items.addchild(node, pm.szexepath);

    while module32next(ModuleList, pm) do

      TreeView1.Items.addchild(node, pm.szexepath);

  end;

  closehandle(ModuleList);

end; // ModuleEnum

procedure TForm1.ProcessEnum(Sender: TObject);
begin // ProcessEnum

  processnumber := 0;

  TreeView1.Items.Clear;

  ProcessList := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

  pe.dwSize := sizeof(TPROCESSENTRY32);

  if process32first(ProcessList, pe) then

  begin

    node := TreeView1.Items.Add(nil, pe.szexefile);

    ModuleEnum(pe.th32ProcessID);

    inc(processnumber);

    while process32next(ProcessList, pe) do

    begin

      node := TreeView1.Items.Add(nil, pe.szexefile);

      ModuleEnum(pe.th32ProcessID);

      inc(processnumber);

    end;

  end;

  edit1.text := '系统进程 : ' + inttostr(processnumber);

  closehandle(ProcessList);

end;

end.


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值