我是靠谱客的博主 陶醉鸭子,最近开发中收集的这篇文章主要介绍获取进程列表、名称、路径,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  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.

转载于:https://www.cnblogs.com/zhaoshujie/archive/2008/10/08/9594822.html

最后

以上就是陶醉鸭子为你收集整理的获取进程列表、名称、路径的全部内容,希望文章能够帮你解决获取进程列表、名称、路径所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部