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

  • 相关阅读:
    零拷贝
    RxJava2源码解析
    一次博客崩溃日志分析
    Spring循环依赖的解决
    解决网络卡顿问题
    软工第一次作业
    3月26-27号训练笔记
    Codeforces Round #708 (Div. 2)题解A,B,C1,C2,E1,E2
    求出所有LIS的可行起点
    2020小米邀请赛决赛补题G,I,J(三DP)
  • 原文地址:https://www.cnblogs.com/lin557/p/6058826.html
Copyright © 2011-2022 走看看