列出系统进程

版权声明

请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。

 

(注意uses TLHelp32)
然后

var lppe: TProcessEntry32;
    found : boolean;
    Hand : THandle;
begin
  Hand := CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
  found := Process32First(Hand,lppe);
  while found do
  begin
    ListBox.Items.Add(StrPas(lppe.szExeFile));//列出所有进程。
    found := Process32Next(Hand,lppe);
  end;
end;

/

uses ... TLHelp32, ...

type
TForm1 = class(TForm)
...
end;

var
Form1: TForm1;
l : Tlist; 返回的东东在"L"这个TList中。

type
TProcessInfo = Record
ExeFile : String;
ProcessID : DWORD;
end;
pProcessInfo = ^TProcessInfo;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var p : pProcessInfo;
i : integer;
ContinueLoop:BOOL;
var
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
begin
l := TList.Create;
l.Clear;
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32);
while integer(ContinueLoop)<>0 do
begin
New(p);
p.ExeFile := FProcessEntry32.szExeFile;
p.ProcessID := FProcessEntry32.th32ProcessID;
l.Add(p);
ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var p : pProcessInfo;
i : integer;
begin
With l do
for i := Count - 1 DownTo 0 do
begin p := items[i]; Dispose(p); Delete(i); end;
end;

...
end.

///
 

procedure TForm1.Button1Click(Sender: TObject);
  {Places the modulenames of the running/minimized tasks into a listbox    }
  var
      pTask : pTaskEntry;   {requires Uses ToolHelp}
      Task  : bool;
      Pstr  : array [0..79] of Char;
      Str   : string[80];
      byt_j : byte;
  begin
     ListBox1.Clear;
     GetMem(pTask, SizeOf(TTaskEntry));       {Reserve memory for TaskEntry}
     pTask^.dwSize:=SizeOf(TTaskEntry);
 
     byt_j:=0;                        {Set up a counter for number of tasks}
     Task:=TaskFirst(pTask);                               {Find first task}
     While task do
     begin
        inc(byt_j);                        {count number of different tasks}
        Str:=StrPas(pTask^.szModule);      {Convert PStr into Pascal string}
        Listbox1.Items.Add(str);          {Store Pascal string into listbox}
        task:=taskNext(pTask);                {Check for next possible task}
     end;
     Label1.Caption:=IntToStr(byt_j)+ ' tasks found';         {Show counter}
  end;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值