亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

Delphi實現獲取進程列表及相關信息的實例

2020-01-31 20:50:10
字體:
來源:轉載
供稿:網友

Delphi實現獲取進程列表及相關信息的實例

前言:

閑著沒事,看著任務管理器好玩,查資料先簡單實現一下,代碼中沒有加入獲取CPU占用率的代碼,這個代碼網上很多,只是不喜歡那種寫法,這里就不寫了。以后繼續完善,對于System Process和System的信息還沒法獲得,那位兄弟知道可以提個醒。

 代碼如下

unit Main;  interface  uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs,TlHelp32, StdCtrls, ComCtrls,psAPI;  type  PTokenUser  =  ^TTokenUser;  _TOKEN_USER  =  record  User:  TSIDAndAttributes;  end;  TTokenUser  =  _TOKEN_USER;    TForm1 = class(TForm)   btn_Get: TButton;   Lv_Process: TListView;   procedure btn_GetClick(Sender: TObject);   procedure FormCreate(Sender: TObject);  private   { Private declarations }   function GetMemUsedText(memsize:Cardinal):string;   function GetProcessPriority(priority:Cardinal):string;   function GetCupUsedPercent(hprocess:THandle):string;   function GetProcessUser(hprocess:THandle):string;  public   { Public declarations }  end;  var  Form1: TForm1;  implementation  {$R *.dfm}  { 作用:提權到Debug,為了在Vista和Win7下讀取系統信息,運行時需要以管理員身份運行 } function PromoteProcessPrivilege(Processhandle:Thandle;Token_Name:pchar):boolean; var   Token:cardinal;   TokenPri:_TOKEN_PRIVILEGES;   Luid:int64;   i:DWORD; begin   Result:=false;   //打開令牌   if OpenProcessToken(Processhandle,TOKEN_ADJUST_PRIVILEGES,Token) then   begin    //看系統權限的特權值     if LookupPrivilegeValue(nil,Token_Name,Luid) then     begin       TokenPri.PrivilegeCount:=1;       TokenPri.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;       TokenPri.Privileges[0].Luid:=Luid;       i:=0;       //提權       if AdjustTokenPrivileges(Token,false,TokenPri,sizeof(TokenPri),nil,i) then         Result:=true;     end;   end;   CloseHandle(Token); end;  function AddFileTimes(KernelTime, UserTime: TFileTime): TDateTime; var  SysTimeK, SysTimeU: TSystemTime; begin  FileTimeToSystemTime(KernelTime, SysTimeK);  FileTimeToSystemTime(UserTime, SysTimeU);  Result :=SystemTimeToDateTime(SysTimeK)+SystemTimeToDateTime(SysTimeU); end;  //獲取CPU時間 function GetProcCPUTime(procID:THandle): TDateTime; var  CreationTime, ExitTime, KernelTime, UserTime: TFileTime; begin  GetProcessTimes(procID, CreationTime, ExitTime, KernelTime,UserTime);  Result := AddFileTimes(KernelTime, UserTime); end;  procedure TForm1.btn_GetClick(Sender: TObject); var  hSnapShot,hProcess,hModel:THandle;  pEntry:TProcessEntry32;  find:Boolean;  item:TListItem;  //內存信息  pPMC:PPROCESS_MEMORY_COUNTERS;  pPMCSize,ProcessPriority:Cardinal;  n:DWORD;  fName:array [0..MAX_PATH-1] of char; begin  //創建進程快照  hSnapShot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);  pEntry.dwSize := SizeOf(pEntry);  //第一個進程  find := Process32First(hSnapShot,pEntry);  while find do  begin   item := Lv_Process.Items.Add;   //進程名   item.Caption := pEntry.szExeFile;   //進程ID   item.SubItems.Add(IntToStr(pEntry.th32ProcessID));   pPMCSize := SizeOf(PROCESS_MEMORY_COUNTERS);   GetMem(pPMC,pPMCSize);   pPMC.cb := pPMCSize;   //打開進程,增加PROCESS_VM_READ權限,以便后面獲取完整路徑時使用   hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,False,pEntry.th32ProcessID);   //獲取內存信息   if GetProcessMemoryInfo(hProcess,pPMC,pPMCSize) then   begin    //取得進程的用戶    item.SubItems.Add(GetProcessUser(hProcess));    //內存使用    item.SubItems.Add(GetMemUsedText(pPMC.WorkingSetSize));    //內存峰值    item.SubItems.Add(GetMemUsedText(pPMC.PeakWorkingSetSize));    //CPU時間    item.SubItems.Add(FormatDateTime('hh:mm:ss',GetProcCPUTime(hProcess)));    //獲取優先級    ProcessPriority := GetPriorityClass(hProcess);    item.SubItems.Add(GetProcessPriority(ProcessPriority));    //根據進程句柄找到模塊句柄    ENumProcessModules(hProcess,@hModel,SizeOf(hModel),n);    //取得完整路徑    GetModuleFileNameEx(hProcess,hModel,fName,Length(fName));    item.SubItems.Add(fName);   end;   FreeMem(pPMC);   CloseHandle(hProcess);   find := Process32Next(hSnapShot,pEntry);  end; end;  function TForm1.GetCupUsedPercent(hprocess: THandle): string; begin end;  function TForm1.GetMemUsedText(memsize: Cardinal): string; begin  Result := IntToStr(memsize div 1024) + ' K'; end;  function TForm1.GetProcessPriority(priority: Cardinal): string; begin  case priority of   IDLE_PRIORITY_CLASS: Result := '低';   NORMAL_PRIORITY_CLASS: Result := '普通';   HIGH_PRIORITY_CLASS: Result := '高';   REALTIME_PRIORITY_CLASS: Result := '實時';  end; end;  //獲取進程的所屬用戶 function TForm1.GetProcessUser(hprocess: THandle): string; var  hToken:THandle;  dwSize,dwUserSize,dwDomainSize:DWORD;  pUser:PTokenUser;  szUserName, szDomainName: array of Char;  peUse:  SID_NAME_USE; begin  //打開權限  if not OpenProcessToken(hprocess,TOKEN_QUERY,hToken) then Exit;  //獲取令牌信息,這里第三個參數使用了nil,是先返回實際大小dwSize,然后根據這個大小去分配內存  GetTokenInformation(hToken,TokenUser,nil,0,dwSize);  pUser := nil;  //分配空間  ReallocMem(pUser,dwSize);  dwUserSize := 0;  dwDomainSize := 0;  //獲取信息  if not GetTokenInformation(hToken,TokenUser,pUser,dwSize,dwSize) then Exit;  //查找用戶信息,先返回用戶名和域名的大小,當然你也可以一次性得到,即不使用動態數組  LookupAccountSid(nil,pUser.User.Sid,nil,dwUserSize,nil,dwDomainSize,peUse);  if (dwUserSize <> 0) and (dwDomainSize <> 0) then  begin   //分配長度   SetLength(szUserName,dwUserSize);   SetLength(szDomainName,dwDomainSize);   //再次,獲取用戶名和域名   LookupAccountSid(nil,pUser.User.Sid,PChar(szUserName),dwUserSize,PChar(szDomainName),dwDomainSize,peUse);  end;  Result := PChar(szUserName)+'/'+PChar(szDomainName);  CloseHandle(hToken);  FreeMem(pUser); end;  procedure TForm1.FormCreate(Sender: TObject); begin  PromoteProcessPrivilege(GetCurrentProcess,'SeDebugPrivilege'); end;  end. 

 運行圖片

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品高潮视频| 久久精品在线视频| 亚洲激情视频在线播放| 一本一本久久a久久精品综合小说| 欧美亚洲国产精品| 欧美性在线观看| 欧美精品久久久久| 日韩有码在线电影| 欧美日本精品在线| 最近2019年日本中文免费字幕| 91伊人影院在线播放| 欧美精品九九久久| 日韩中文字幕国产| 亚洲电影免费观看| 黑人极品videos精品欧美裸| 青草热久免费精品视频| 亚洲精品视频中文字幕| 中文字幕精品—区二区| 久久伊人精品一区二区三区| 18性欧美xxxⅹ性满足| 国产97在线|亚洲| 国内伊人久久久久久网站视频| 欧美成aaa人片在线观看蜜臀| 成人福利视频网| 国产欧美日韩免费| 国产精品久久久久久网站| 国产视频丨精品|在线观看| 国产精品免费一区豆花| 亚洲视频一区二区三区| 欧美成人午夜免费视在线看片| 亚洲天堂网站在线观看视频| 疯狂蹂躏欧美一区二区精品| 欧洲午夜精品久久久| 国产精品 欧美在线| 亚洲精品视频播放| 欧美精品video| 国产精品久久久久免费a∨大胸| 97视频在线观看免费高清完整版在线观看| 国产视频久久久久| 91超碰中文字幕久久精品| 亚洲国产精品大全| 亚洲黄页视频免费观看| 欧美久久久精品| 高清欧美一区二区三区| 色777狠狠综合秋免鲁丝| 亚洲自拍中文字幕| 久久久久久18| 欧美日韩精品在线视频| 欧美国产乱视频| 亚洲有声小说3d| 97久久精品在线| 欧美成人三级视频网站| 中日韩美女免费视频网站在线观看| 一本大道亚洲视频| 成人黄色av免费在线观看| 国产在线精品成人一区二区三区| 国产精品久久久久不卡| 视频一区视频二区国产精品| 国产精品福利观看| 欧美综合第一页| 欧美巨猛xxxx猛交黑人97人| 日本亚洲精品在线观看| 亚洲自拍中文字幕| 超碰日本道色综合久久综合| 国产精品成人aaaaa网站| 国产精品成人观看视频国产奇米| 国产精品黄页免费高清在线观看| 久久久久久久久国产精品| 97视频免费在线观看| 欧美中文字幕视频在线观看| 成人免费看黄网站| zzijzzij亚洲日本成熟少妇| 45www国产精品网站| 日韩精品一区二区视频| 高清在线视频日韩欧美| 亚洲三级黄色在线观看| 日韩福利在线播放| 午夜精品在线观看| 国产日韩欧美综合| 国产不卡av在线免费观看| 91精品国产综合久久久久久久久| 国产精品久久久久久久久免费看| 97视频在线观看免费| 亚洲国产精品久久久久秋霞不卡| 国产一区二区精品丝袜| 日韩欧美大尺度| 中文字幕在线看视频国产欧美| 国产欧美一区二区白浆黑人| 久久久久久久久久久91| 日韩精品一区二区三区第95| 国产精品igao视频| 亚洲国产精品va在线观看黑人| 亚洲色图av在线| 国产日韩欧美一二三区| 亚洲激情久久久| 亚洲国产欧美一区二区丝袜黑人| 欧美老女人bb| 国产精品旅馆在线| 韩国国内大量揄拍精品视频| 久久久91精品国产一区不卡| 91性高湖久久久久久久久_久久99| 欧美综合国产精品久久丁香| 国内精品久久久久影院 日本资源| 91中文精品字幕在线视频| 日韩av电影免费观看高清| 国产精品影片在线观看| 国产91色在线| 亚洲精品视频播放| 日韩精品久久久久| 精品久久久久久亚洲国产300| 国产成一区二区| 成人精品久久久| 欧美精品激情在线| 91九色蝌蚪国产| 2020欧美日韩在线视频| 亚洲午夜未删减在线观看| 欧洲s码亚洲m码精品一区| 久久国产精品久久久久久| 国产成人精品电影久久久| 久久影视电视剧免费网站| 国产精品h在线观看| 亚洲国产欧美久久| 欧美性猛交xxxx乱大交| 91av国产在线| 国产精品日韩精品| 亚洲激情视频在线播放| 中文字幕一区日韩电影| 亚洲国产私拍精品国模在线观看| 亚洲永久免费观看| 久久天天躁狠狠躁老女人| 欧亚精品中文字幕| 91久久精品美女高潮| 亚洲黄页网在线观看| 亚洲bt欧美bt日本bt| 国产精品福利观看| 日韩一区视频在线| 在线观看视频99| 欧美激情免费看| 国产日韩欧美黄色| 中文字幕精品av| 欧洲精品毛片网站| 日韩av在线最新| 激情久久av一区av二区av三区| 欧美壮男野外gaytube| 日本在线精品视频| 91精品久久久久久久| 亚洲一区二区自拍| 欧美高清不卡在线| 国产精品久久久久久久久久新婚| 国产欧美精品日韩| 欧美大片va欧美在线播放| 久久久av免费| 中文字幕亚洲在线| 亚洲白虎美女被爆操| 欧美夫妻性生活xx| 成人黄色av网| 青青草精品毛片| 国产精品久久久一区| 欧美成人免费全部观看天天性色| 亚洲国产欧美一区| 久久久久久久一区二区三区| 欧美成人午夜激情视频| 亚洲男人7777| 日韩精品免费在线视频|