Delphi help

hogyan lehet egy listát az összes futó folyamatok

[Válasz kérdésre Evgeny Vorobyev]


Tudsz! Tulajdonképpen mindent tud, ha csak meg, mind :-)))

Tedd formájában listáját TListbox és TButton a gombot a gomb megnyomása kódot írni, mint ez:

eljárás TForm1.Button1Click (Sender: TObject);
var
Ablak: HWND;
puffer: array [0..127] char;
kezdődik
ListBox1.Clear;
Ablak: = GetWindow (Handle, GW_HWNDFIRST);
míg Window<>0 nem kezdődik
if (Window<>Application.Handle) és
IsWindowVisible (ablak), és
(GetWindow (Ablak, GW_OWNER) = 0) és
(GetWindowText (Ablak, puffert, sizeof (puffer))<>0)
ezután kezdődik
GetWindowText (Ablak, puffert, sizeof (puffer));
ListBox1.Items.Add (StrPas (puffer));
végén;
Ablak: = GetWindow (Ablak, GW_HWNDNEXT);
végén;
ListBox1.ItemIndex: = 0;
végén;


Hogyan történik ez?

Segítségével a GetWindow () azt találjuk, az első ablak található, a Z-sorrendben, talált kilincs elhelyezett variábilis Ablak Ablak: = GetWindow (Handle, GW_HWNDFIRST);


akkor meg kell, hogy értékelje a „Che, sőt, már az ott található” :))

első zárja ki annak lehetőségét, hozzátéve saját ablakában a listán

if (Window<>Application.Handle) és

akkor azt mondjuk, hogy adjunk egy ablak, hogy a lista csak akkor, ha úgy tűnik,

Csak akkor, ha ez nem egy leányvállalat és egy címet

(GetWindow (Ablak, GW_OWNER) = 0) és
(GetWindowText (Ablak, puffert, sizeof (puffer))<>0)


És azt mondják, csak akkor, ha talált ablak minden feltételnek megfelel, csak akkor adja hozzá a listához, majd keresi a következő ablakban

és csak kezelni.

Kapcsolódó cikkek