zoukankan      html  css  js  c++  java
  • 获取进程列表、名称、路径

    1. unit Unit1;
    2. interface
    3. uses
    4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    5.   Dialogs, StdCtrls, TLHelp32, psapi;
    6. type
    7.   TForm1 = class(TForm)
    8.     Button1: TButton;
    9.     ListBox1: TListBox;
    10.     procedure Button1Click(Sender: TObject);
    11.   private
    12.     function GetProcessPath(ProcessID: DWORD): string;
    13.   public
    14.     { Public declarations }
    15.   end;
    16. var
    17.   Form1: TForm1;
    18. implementation
    19. {$R *.dfm}
    20. //------------------------------------------------------------------------------
    21. // 通过进程ID获得进程路径
    22. //------------------------------------------------------------------------------
    23. function TForm1.GetProcessPath(ProcessID: DWORD): string;
    24. var
    25.   Hand: THandle;
    26.   ModName: array[0..Max_Path - 1of Char;
    27.   hMod: HModule;
    28.   n: DWORD;
    29. begin
    30.   Result := '';
    31.   Hand := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, ProcessID);
    32.   if Hand > 0 then
    33.   try
    34.     ENumProcessModules(Hand, @hMod, Sizeof(hMod), n);
    35.     if GetModuleFileNameEx(Hand, hMod, ModName, Sizeof(ModName)) > 0 then
    36.       Result := ExtractFilePath(ModName);
    37.   except
    38.   end;
    39. end;
    40. procedure TForm1.Button1Click(Sender: TObject);
    41. var
    42.   ProcessName: string//进程名
    43.   ProcessID: integer//进程表示符
    44.   i: integer;
    45.   ContinueLoop: BOOL;
    46.   FSnapshotHandle: THandle; //进程快照句柄
    47.   FProcessEntry32: TProcessEntry32; //进程入口的结构体信息
    48. begin
    49.   FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //创建一个进程快照
    50.   FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
    51.   ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); //得到系统中第一个进程
    52. //循环例举
    53.   while ContinueLoop do
    54.   begin
    55.     ProcessName := FProcessEntry32.szExeFile;
    56.     ProcessID := FProcessEntry32.th32ProcessID;
    57.     Listbox1.Items.add('应用程序名:' + ProcessName + '#进程ID:' + inttostr(ProcessID) + '路径:' + GetProcessPath(ProcessID));
    58.     ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
    59.   end;
    60. end;
    61. end.
  • 相关阅读:
    Linux的命令、用户、权限管理
    Java中快捷键
    数组的学习
    Java中方法定义和调用的学习
    java中的标识符、修饰符、关键字
    MYSQL的学习
    JavaScript小白教程2
    navicat中选择utf-8时的困惑
    python小白教程
    英语单词
  • 原文地址:https://www.cnblogs.com/zhaoshujie/p/9594822.html
Copyright © 2011-2022 走看看