zoukankan      html  css  js  c++  java
  • Delphi 枚举所有进程

    通过进程快照枚举所有进程,关于进程快照,在Delphi5开发人员指南中有说明,当然也可以百度一下用法。

    使用进程快照CreateToolhelp32Snapshot,必须uses TlHelp32单元。

    从快照中得到的进程ID,可以获得进程的很多信息,这里不多说,网上有很多资料,具体需要什么可以百度查一下。

    以这里记录一下,方便以后查找

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls;
    
    type
      TForm1 = class(TForm)
        Memo1: TMemo;
        Btn1: TButton;
        procedure Btn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    uses
      TlHelp32;
    
    //  tagPROCESSENTRY32 = packed record
    //    dwSize: DWORD;
    //    cntUsage: DWORD;
    //    th32ProcessID: DWORD;       // 进程ID
    //    th32DefaultHeapID: DWORD;
    //    th32ModuleID: DWORD;        // associated exe
    //    cntThreads: DWORD;
    //    th32ParentProcessID: DWORD; // this process's parent process
    //    pcPriClassBase: Longint;    // Base priority of process's threads
    //    dwFlags: DWORD;
    //    szExeFile: array[0..MAX_PATH - 1] of Char;// Path
    //  end;
    //  TProcessEntry32 = tagPROCESSENTRY32;
    
    procedure TForm1.Btn1Click(Sender: TObject);
    var
      hSnap: THandle;
      vPE: TProcessEntry32;
      sTmp: AnsiString;
    begin
      Memo1.Lines.Clear;
      hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
      vPE.dwSize := SizeOf(TProcessEntry32);
      if Process32First(hSnap, vPE) then  // Process32First找到的肯定是 [System Process] 不管
      begin
        //如果 Process32First 函数执行成功 后使用 Process32Next 读取每个进程的信息
        while Process32Next(hSnap, vPE) do
        begin
          sTmp := PAnsiChar(@vPE.szExeFile[0]);
          Memo1.Lines.Add(sTmp);
        end;
      end;
      CloseHandle(hSnap);
    end;
    
    end.

    效果图如下:

     by lin 2016-11-13

  • 相关阅读:
    java、javaw和javaws的区别
    Hibernate4教程二:基本配置(2)
    Maven入门指南10:Maven的生命周期和插件
    Java中的断言(assert)
    MySQL的数据类型:文本、数字、日期/时间
    面向对象的三大基本特征和五大基本原则
    高内聚低耦合的介绍
    9.7 模拟赛
    16-17学期计划(每周)
    JZOJ 5281 钦点
  • 原文地址:https://www.cnblogs.com/lin557/p/6058826.html
Copyright © 2011-2022 走看看