gpt4 book ai didi

delphi - Delphi如何获取其他进程的信息?

转载 作者:行者123 更新时间:2023-12-03 15:39:40 29 4
gpt4 key购买 nike

我想制作一个显示此信息的任务管理器程序:

  1. 图片名称
  2. 内存使用情况
  3. PID

我该怎么做?

最佳答案

因此,您不需要 J(WS)CL,有一个简单的 WinAPI 调用几乎可以完成您想要的所有操作,这就是 CreateToolhelp32Snapshot。要获取所有正在运行的进程的快照,您必须按如下方式调用它:

var
snapshot: THandle;
begin
snapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

现在您有了所有正在运行的进程的列表。您可以使用 Process32First 和 Process32Next 函数浏览此列表,列表条目是 PROCESSENTRY32 结构(其中包含进程等) ID 和图像名称)。

uses 
Windows, TLHelp32, SysUtils;

var
snapshot: THandle;
ProcEntry: TProcessEntry32;
s: String;
begin
snapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (snapshot <> INVALID_HANDLE_VALUE) then begin
ProcEntry.dwSize := SizeOf(ProcessEntry32);
if (Process32First(snapshot, ProcEntry)) then begin
s := ProcEntry.szExeFile;
// s contains image name of the first process
while Process32Next(snapshot, ProcEntry) do begin
s := ProcEntry.szExeFile;
// s contains image name of the current process
end;
end;
end;
CloseHandle(snapshot);

但是,内存消耗信息似乎并未包含在内,但您可以通过另一个简单的 API 调用 GetProcessMemoryInfo

获取此信息
uses
psAPI;

var
pmc: TProcessMemoryCounters;
begin
pmc.cb := SizeOf(pmc) ;
if GetProcessMemoryInfo(processID, @pmc, SizeOf(pmc)) then
// Usage in Bytes: pmc.WorkingSetSize
else
// fail

您只需使用从快照中检索到的进程 ID 来调用此函数即可。

关于delphi - Delphi如何获取其他进程的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2616279/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com