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...