已知一个进程的pid,如何获得某时刻该进程占用的CPU、内存、虚拟内存、句柄数等信息! 已获得一个进程的pid,如何获得某时刻该进程占用的CPU、内存、虚拟内存、句柄数等信息!(就是在系统的任务管理器中可以观看到的每个进程的所有信息) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参考:http://delphi.bibts.com/CPU-t926883.htm那里有一些源码 unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ExtCtrls, ImgList, TLHelp32, Menus, ShellApi;type TForm1 = class(TForm) Panel1: TPanel; ListView1: TListView; PopupMenu1: TPopupMenu; EndProcess1: TMenuItem; ImageList1: TImageList; procedure FormShow(Sender: TObject); procedure EndProcess1Click(Sender: TObject); private { Private declarations } public procedure ShowProcess; end;var Form1: TForm1;implementation{$R *.dfm}function EnumProcesses(lpidProcess,cb,cbNeeded:dword):integer;stdcall;external 'PSAPI.DLL';function EnumProcessModules(hProcess:THandle;lphModule:HMODULE;cb,lpcbNeeded:Dword):integer;stdcall;external 'PSAPI.DLL';function GetModuleFileNameExA(hProcess:THandle;hModule:HMODULE;lpFilename:pchar;nSize:DWord):integer;stdcall;external 'PSAPI.DLL';procedure TForm1.ShowProcess;var ProcessStruct:ProcessEntry32; ProcessHandle,HProcess:THandle; Pb:Boolean; FileName:array[0..1024] of char; hMods:array [0..1024] of DWORD; cbNeeded,cMod:DWORD; SHFileInfo:TSHFILEINFO; Icon:TIcon;begin ListView1.Clear; ImageList1.Clear; ProcessHandle:=CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0); ProcessStruct.dwSize:=SizeOf(ProcessStruct); Pb:=Process32First(ProcessHandle,ProcessStruct); while Pb do begin ListView1.Items.Add; ListView1.Items[ListView1.Items.Count-1].Caption:=ExtractFileName(ProcessStruct.szExeFile); ListView1.Items[ListView1.Items.Count-1].SubItems.Add(inttostr(ProcessStruct.th32ProcessID)); HProcess:=OpenProcess(PROCESS_ALL_ACCESS,false,ProcessStruct.th32ProcessID); ListView1.Items[ListView1.Items.Count-1].SubItems.Add(inttostr(HProcess)); if EnumProcessModules(hProcess,dword(@hMods),sizeof(hMods),dword(@cbNeeded))<>0 then begin GetModuleFileNameExA(hProcess,cMod,FileName,sizeof(FileName)); end; //Get Icon try SHGetFileInfo(FileName,FILE_ATTRIBUTE_NORMAL,SHFileInfo,SizeOf(SHFileInfo), SHGFI_SMALLICON or SHGFI_ICON); Icon:=TIcon.Create; try Icon.Handle:=SHFileInfo.hIcon; ImageList1.AddIcon(Icon); ListView1.Items[ListView1.Items.Count-1].ImageIndex:=ImageList1.Count -1; finally Icon.Free; end; except end; ListView1.Items[ListView1.Items.Count-1].SubItems.Add(FileName); Pb:=Process32Next(ProcessHandle,ProcessStruct); CloseHandle(HProcess); end;end;procedure TForm1.FormShow(Sender: TObject);begin ShowProcess;end;procedure TForm1.EndProcess1Click(Sender: TObject);var hKill:integer;begin if ListView1.Selected <> nil then begin hKill:=OpenProcess(PROCESS_TERMINATE,False,strtoint(ListView1.Selected.SubItems.Strings[0])); TerminateProcess(hKill,0); CloseHandle(hKill); ShowProcess; end;end;end. 上面的功能我实现了,我能枚举出来进程获得进程id,但是获取不到其他的信息:cpu占用、内存占用、虚拟内存占用等,请高手们帮帮忙啊!!! 用PED表查询啊!"如何获得某时刻该进程占用的CPU、内存、虚拟内存、句柄数等信息!"可是这不能得到隐藏进程的进程占用的CPU、内存、虚拟内存、句柄数等信息!" 多线程 调用webservices下载文件 关于证书的打印 执行这段程序总出错! 安装完expressbars,运行时,提示没有发现designinfo.dcu?回答立刻给分。 根据日期值怎么得到是星期几? 急诊,在线,TQuery的Close方法出现莫名其妙的访问地址错误 TADOQuery里面有办法用SQL语句区分大小写吗? 批量增加记录,用append快,还是SQL的insert 快? 各位老大介绍几本关于SQL的好书,谢谢 有没有人用过TRzSTatusBar的系列控件,在哪里有下载,还有哪里有“管家婆”系列下载呢? 利用ScktSrvr.exe向客户端发送消息 dbgrid的问题:
http://delphi.bibts.com/CPU-t926883.htm
那里有一些源码
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, ImgList, TLHelp32, Menus, ShellApi;type TForm1 = class(TForm)
Panel1: TPanel;
ListView1: TListView;
PopupMenu1: TPopupMenu;
EndProcess1: TMenuItem;
ImageList1: TImageList;
procedure FormShow(Sender: TObject);
procedure EndProcess1Click(Sender: TObject);
private
{ Private declarations }
public
procedure ShowProcess;
end;var
Form1: TForm1;implementation{$R *.dfm}function EnumProcesses(lpidProcess,cb,cbNeeded:dword):integer;stdcall;external 'PSAPI.DLL';
function EnumProcessModules(hProcess:THandle;lphModule:HMODULE;cb,lpcbNeeded:Dword):integer;stdcall;external 'PSAPI.DLL';
function GetModuleFileNameExA(hProcess:THandle;hModule:HMODULE;lpFilename:pchar;nSize:DWord):integer;stdcall;external 'PSAPI.DLL';procedure TForm1.ShowProcess;
var
ProcessStruct:ProcessEntry32;
ProcessHandle,HProcess:THandle;
Pb:Boolean;
FileName:array[0..1024] of char;
hMods:array [0..1024] of DWORD;
cbNeeded,cMod:DWORD;
SHFileInfo:TSHFILEINFO;
Icon:TIcon;begin
ListView1.Clear;
ImageList1.Clear;
ProcessHandle:=CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0);
ProcessStruct.dwSize:=SizeOf(ProcessStruct);
Pb:=Process32First(ProcessHandle,ProcessStruct);
while Pb do
begin
ListView1.Items.Add;
ListView1.Items[ListView1.Items.Count-1].Caption:=ExtractFileName(ProcessStruct.szExeFile);
ListView1.Items[ListView1.Items.Count-1].SubItems.Add(inttostr(ProcessStruct.th32ProcessID));
HProcess:=OpenProcess(PROCESS_ALL_ACCESS,false,ProcessStruct.th32ProcessID);
ListView1.Items[ListView1.Items.Count-1].SubItems.Add(inttostr(HProcess)); if EnumProcessModules(hProcess,dword(@hMods),sizeof(hMods),dword(@cbNeeded))<>0 then
begin
GetModuleFileNameExA(hProcess,cMod,FileName,sizeof(FileName));
end; //Get Icon
try
SHGetFileInfo(FileName,FILE_ATTRIBUTE_NORMAL,SHFileInfo,SizeOf(SHFileInfo), SHGFI_SMALLICON or SHGFI_ICON);
Icon:=TIcon.Create;
try
Icon.Handle:=SHFileInfo.hIcon;
ImageList1.AddIcon(Icon);
ListView1.Items[ListView1.Items.Count-1].ImageIndex:=ImageList1.Count -1;
finally
Icon.Free;
end;
except
end; ListView1.Items[ListView1.Items.Count-1].SubItems.Add(FileName); Pb:=Process32Next(ProcessHandle,ProcessStruct);
CloseHandle(HProcess); end;
end;procedure TForm1.FormShow(Sender: TObject);
begin
ShowProcess;
end;procedure TForm1.EndProcess1Click(Sender: TObject);
var
hKill:integer;
begin
if ListView1.Selected <> nil then
begin
hKill:=OpenProcess(PROCESS_TERMINATE,False,strtoint(ListView1.Selected.SubItems.Strings[0]));
TerminateProcess(hKill,0);
CloseHandle(hKill);
ShowProcess;
end;
end;end.
可是这不能得到隐藏进程的进程占用的CPU、内存、虚拟内存、句柄数等信息!"