进程模块信息

 uses Tlhelp32;
var
  modList: TStrings;

procedure ModuleEnum(processid: Dword;Var ProcList: TstringList);
var
  ModuleList: Thandle;
  pm: TMODULEENTRY32;
  isFind:Boolean;
begin
  ModuleList := CreateToolhelp32Snapshot
    (TH32CS_SNAPMODULE, processID);
  pm.dwSize := sizeof(TMODULEENTRY32);
  isFind:=module32first(ModuleList, pm);
  while isFind do
  begin
    ProcList.Add(pm.szexepath);
    isFind:=module32next(ModuleList, pm)
  end;
  closehandle(ModuleList);
end;

procedure TForm1.cbb1Click(Sender: TObject);
var
  ID, ProcID: DWORD;
  i: Integer;
  lt: TStrings;
  itm: TListItem;
begin
  lv1.Clear;
  try
    Lt := TStringList.Create;
    Lt.Clear;
    ID := cbb1.ItemIndex;
    ProcID := StrToInt(modList.Strings[id]);
    ModuleEnum(ProcID,Lt);
    for i := 0 to Lt.Count - 1 do
    begin
      itm := lv1.Items.Add;
      itm.Caption := lt.Strings[i];
    end;
  finally
    lt.Free;
  end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  modList.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  Thand32: THandle;
  procstruct: TProcessEntry32;
  Pname: string;
  pid: DWORD;
  finded: boolean;
begin
  try
    Thand32 := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    procstruct.dwSize := SizeOf(procstruct);
    finded := Process32First(Thand32, procstruct);
    modList := TStringList.Create;
    modList.Clear;
    while finded do
    begin
      pname := procstruct.szExeFile;
      cbb1.Items.Add(pname);
      Pid := procstruct.th32ProcessID;
      modList.Add(IntToStr(Pid));
      finded := Process32Next(Thand32, procstruct);
    end;
    cbb1.ItemIndex := 0;
  finally
    CloseHandle(Thand32);
  end;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值