獲取系統所有程序

2021-06-01 21:18:09 字數 1666 閱讀 3834

delphi的tlhelp32單元封裝了關於程序執行緒,堆,模組的函式和結構。寫**之前先對幾個函式進行一下說明。

createtoolhelp32snapshot 函式為指定的程序、程序使用的堆[heap]、模組[module]、執行緒[thread])建立乙個快照[snapshot]。也就是各個程序的這些相關資訊。函式的申明如下:

tcreatetoolhelp32snapshot = function (dwflags, th32processid: dword): thandle stdcall;(具體引數說明請參看幫助)

tprocessentry32 結構包含程序的一些資訊,定義如下

tprocessentry32 = tagprocessentry32w;
tagprocessentry32w = record

dwsize: dword; //該記錄型的大小,在使用之前必須對它進行初始化

cntusage: dword; //這個成員一般設定為0

th32processid: dword; // this process pid

th32defaultheapid: dword;

th32moduleid: dword; // associated exe

cntthreads: dword; //該程序開啟的執行緒數

th32parentprocessid: dword; // this process's parent process 建立該程序的程序的pid

pcpriclassbase: longint; // base priority of process's threads 執行緒優先權

dwflags: dword;

szexefile: array[0..max_path - 1] of wchar;// path 該程序可執行檔案的名字

end;

process32first 函式獲取系統快照裡第乙個程序的資訊,宣告如下:

tprocess32firstw = function (hsnapshot: thandle; var lppe: tprocessentry32w): bool stdcall;
hsnapshot為通過createtoolhelp32snapshot獲取的快照的控制代碼,lppe是指向tprocessentry32的乙個指標,呼叫該函式得到的程序資訊就存放在lppe指向的記錄裡

完整**如下:

procedure getsyspro;

var h:thandle;

f:boolean;

lppe:tprocessentry32;

begin

lppe.dwsize := sizeof(lppe);

f := process32first(h, lppe);

while integer(f) <> 0 do

begin

memo1.lines.add(lppe.szexefile+'----'+inttostr(lppe.th32processid));

f := process32next(h, lppe);

end;

end;

Qt獲取所有程序 終止某個程序

中用到qt庫的地方,不使用qt庫的可以替換為自己相應的函式 方法一 qt開源庫,通過qprocess啟動系統命令 tasklist.exe 獲取正在執行的程序 qprocess process process.start tasklist.exe if process.waitforfinished...

visual c 得到系統所有程序

用createtoolhelp32snapshot process32first process32next api列舉系統程序 在很多情況下需要對系統的程序進行操作,方法有很多種但最常用的是 createtoolhelp32snapshot process32first process32next...

獲取系統的程序資訊

要想獲取系統的程序資訊,有個很好的方法,就是用toolhelp,其提供的介面可以方便的滿足你的要求,如下 include 首先匯入標頭檔案 pe就是我們獲取的程序結構體 dosomething fok process32next m hsnapshot,pe 還有嗎?其中結構體processentr...