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

  • 相关阅读:
    六大设计原则(一)
    .Net MVC 实现WebSocket
    Socket基础三
    Linux date命令的用法(转)
    SpringBoot自定义校验注解校验日期时间格式字符串
    前缀、中缀、后缀表达式
    什么是重放攻击,列举几种常见防御手段?
    09月13日总结
    09月12日总结
    09月11日总结
  • 原文地址:https://www.cnblogs.com/lin557/p/6058826.html
Copyright © 2011-2022 走看看