文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>获取进程快照

获取进程快照

时间:2010-10-04  来源:江湖一键客

点击下载演示工程

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, TLHelp32, ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ListView1: TListView;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  hSnapshot:THandle;
  pe32:TProcessEntry32;
  item:TListItem;
begin
    {function CreateToolhelp32Snapshot(dwFlags, th32ProcessID: DWORD): THandle;}
    {CreateToolhelp32Snapshot函数功能:函数为指定的进程、进程使用的堆[HEAP]、}
    {模块[MODULE]、线程[THREAD])建立一个快照[snapshot]。 }
    {参数1说明:dwFlags}
    {TH32CS_INHERIT        声明快照句柄是可继承的。}
    {TH32CS_SNAPALL        在快照中包含系统中所有的进程和线程。}
    {TH32CS_SNAPHEAPLIST   在快照中包含在th32ProcessID中指定的进程的所有的堆。}
    {TH32CS_SNAPMODULE     在快照中包含在th32ProcessID中指定的进程的所有的模块。}
    {TH32CS_SNAPPROCESS    在快照中包含系统中所有的进程。}
    {TH32CS_SNAPTHREAD     在快照中包含系统中所有的线程。}
    {参数2说明:th32ProcessID}
    {指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了}
    {TH32CS_SNAPHEAPLIST或者TH32CS_SNAPMODULE后才有效,在其他情况下该参数被忽略,}
    {所有的进程都会被快照。}
    {返回值:}
    {调用成功,返回快照的句柄,调用失败,返回INVALID_HANDLE_VALUE 。 }
    hSnapshot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    if hSnapshot=0 then begin
        ShowMessage('创建进程快照失败!');
        Abort();
    end;

    {PROCESSENTRY32结构}
    {tagPROCESSENTRY32 = packed record
      dwSize: DWORD;              结构的大小
      cntUsage: DWORD;            此进程的引用计数
      th32ProcessID: DWORD;       进程ID
      th32DefaultHeapID: DWORD;   进程默认堆
      th32ModuleID: DWORD;        进程模块IDThis
      cntThreads: DWORD;          此进程开启的线程计数
      th32ParentProcessID: DWORD; 父进程的ID
      pcPriClassBase: Longint;    线程优先权
      dwFlags: DWORD;
      szExeFile: array[0..MAX_PATH - 1] of Char; 进程全名
    end;}
    pe32.dwSize:=SizeOf(PROCESSENTRY32);
    {function Process32First(hSnapshot: THandle; var lppe: TProcessEntry32): BOOL;}
    {Process32First 是一个进程获取函数,当我们利用函数CreateToolhelp32Snapshot()}
    {获得当前运行进程的快照后,我们可以利用process32First函数来获得第一个进程的句柄 }
    {参数1说明:hSnapshot}
    {CreateToolhelp32Snapshot获取进程快照的句柄}
    {参数2说明:lppe}
    {TProcessEntry32创建的结构体}
    {返回值:}
    {调用成功,返回True,调用失败,返回False。 }
    if not Process32First(hSnapshot,pe32) then begin
        ShowMessage('获取第一个进程失败!');
    end;
    {function Process32Next(hSnapshot: THandle; var lppe: TProcessEntry32): BOOL;}
    {Process32Next是一个进程获取函数,当我们利用函数CreateToolhelp32Snapshot()}
    {获得当前运行进程的快照后,我们可以利用Process32Next函数来获得下一个进程的句柄}
    {参数1说明:hSnapshot}
    {CreateToolhelp32Snapshot获取进程快照的句柄}
    {参数2说明:lppe}
    {TProcessEntry32创建的结构体}
    {返回值:}
    {调用成功,返回True,调用失败,返回False。 }
    ListView1.Clear;
    repeat
         item:=ListView1.Items.Add;
         item.Caption:=IntToStr(pe32.th32ProcessID);
         item.SubItems.Add(pe32.szExeFile);
         item.SubItems.Add(IntToStr(pe32.pcPriClassBase));
         item.SubItems.Add(IntToStr(pe32.th32ParentProcessID));
    until not Process32Next(hSnapshot,pe32);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
    ShowMessage('程序名称:获取进程快照'+#13+
                '版本:1.0.0.0'+#13+
                '日期:2010-10-4'+#13+
                '作者:江湖一键客'+#13+
                '业务联系QQ:82530662');
end;

end.

相关阅读 更多 +
排行榜 更多 +
马里奥赛车世界游戏手机版下载

马里奥赛车世界游戏手机版下载

赛车竞速 下载
无畏契约皮肤开箱器手游下载

无畏契约皮肤开箱器手游下载

休闲益智 下载
旭日之城官方正版下载

旭日之城官方正版下载

策略塔防 下载