HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Folyamatok kilistázása és leállítása


Példaprogram letöltése

3851 bájt

Ebben a példában azt nézzük meg, hogy miként lehet kilistázni a rendszerben futó folyamatokat, és hogy miként lehet leállítani közülük egy kiválasztott programot.

A feladat megoldásához szükséges függvények a TLHelp32 unitban vannak implementálva. A folyamatok neveit és azonosítóit egy TListView komponens segítségével jelenítjük meg.
A lista elkészítését a GetProcessList függvény végzi el.
procedure GetProcessList;
Először is, szükségünk van egy leíróra, amit a CreateToolHelp32Snapshot függvénnyel kérdezhetünk le.
CreateToolhelp32Snapshot
function CreateToolhelp32Snapshot(
dwFlags,
th32ProcessID: DWORD
): THandle;
„Pillanatfelvételt” készít a rendszer folyamatairól.
Paraméterek
dwFlags
Ez a paraméter határozza meg, hogy mely folyamatok kerüljenek be a listába. A következő értékeket használhatjuk:
  • TH32CS_INHERIT a "pillanatfelvétel" leírója örökölhető.
  • TH32CS_SNAPHEAPLIST a megadott processz (th32ProcessID) heap-listája.
  • TH32CS_SNAPMODULE a megadott processz (th32ProcessID) modul-listája.
  • TH32CS_SNAPPROCESS a Win32 processz lista.
  • TH32CS_SNAPTHREAD a Win32 szálak is belekerülnek a listába.
  • TH32CS_SNAPALL Ugyanaz, mintha a következő 4 flag-et egyszerre használtuk volna: TH32CS_SNAPHEAPLIST, TH32CS_SNAPMODULE, TH32CS_SNAPPROCESS és TH32CS_SNAPTHREAD.
th32ProcessID: DWORD
Processz azonosító. Ha az értéke 0, akkor az aktuális processzt azonosítja. Akkor van értelme használni, ha a TH32CS_SNAPHEAPLIST vagy a TH32CS_SNAPMODULE flag beállított, ellenkező esetben figyelmen kívül marad.
Visszatérési érték
Hiba esetén -1, egyébként egy leíró.
Az első processz adatait a Process32First függvénnyel olvashatjuk be.
if Process32First(h,data) then begin
A további processzek adatainak eléréséhez már a Process32Next függvényt kell használnunk.
Mindkét függvény első paraméterében a lekérdezett leírót kell megadnunk, a második paraméterben pedig egy TProcessEntry32 típusú változót. Ebbe a változóba kerül a lekérdezés eredménye.
Mielőtt meghívnánk a Process32First függvényt, a TProcessEntry32 típusú változó dwSize tagjában be kell állítanunk a struktúra méretét. Ha ezt nem tesszük meg, akkor a függvény futása hibát eredményez.
data.dwSize:=SizeOf(TProcessEntry32);
A lekérdezett processz nevét a szExeFile tag, azonosítóját a th32ProcessID tag tartalmazza.
Ha meg akarunk szüntetni egy folyamatot, akkor ismernünk kell az azonosítóját.
PrID:=StrToInt(ItemFocused.SubItems[0]);
Az azonosító és az OpenProcess függvény segítségével elérhetjük a processz leíróját.
h:=OpenProcess(1,BOOL(0),PrID);
A kijelölt folyamatot a TerminateProcess függvénnyel szüntethetjük meg.
Ret:=TerminateProcess(h,0);

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 182. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |