黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图
您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 黑客编程 >> 文章正文
[图文]列举进程(Delphi编程)
      ★★★★★
列举进程(Delphi编程)
文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-9-19

本实例介绍如何列举系统中正在运行的进程。

向窗体上添加一个TListBox组件和一个TButton组件,设计完成的主界面如图4-27所示。

4-27  主界面

首先需要向程序的uses段中加入TLHelp32,并且添加TList类型的变量lstProgress,然后再自定义一个记录类型:

type

  TProcessInfo = Record

    ExeFile    : String;

    ProcessID  : DWORD;

  end;

  pProcessInfo = ^TProcessInfo;

这样,在程序设计过程中就可以使用pProcessInfo来定义指针变量了。

还需要向程序中添加一个自定义过程ViewProgress,该过程没有参数,它的作用就是显示系统中正在运行的进程,当用户需要刷新显示时,也可以调用该过程。ViewProgress过程的内容代码如下:

procedure TfrmMain.ViewProgress;

var

    PI:pProcessInfo;

    ContinueLoop:BOOL;

    FSnapshotHandle:THandle;

    FProcessEntry32:TProcessEntry32;

    I:Integer;

begin

    ListBox1.Items.Clear;

    lstProgress.Clear;

 

    FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

    FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);

    ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32);

    while integer(ContinueLoop)<>0 do

    begin

        New(PI);

        PI.ExeFile := FProcessEntry32.szExeFile;

        PI.ProcessID := FProcessEntry32.th32ProcessID;

        lstProgress.Add(PI);

        ListBox1.Items.Add(PI.ExeFile);

        ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);

    end;

    CloseHandle(FSnapshotHandle);

end;

在程序运行的初期或单击Refresh按钮时,就会调用ViewProgress过程。首先清空列表框中显示的内容和全局变量lstProgress中存储的进程列表。然后创建一个THandle类型的变量FSnapshotHandle。最后通过调用Process32First Process32Next 函数就可以遍历当前系统中运行的进程了。

[1] [2] 下一页  

文章录入:cainiaowang    责任编辑:cainiaowang 
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
VIP 专 区
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886