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.