Delphi ajuta

cum să obțineți o listă a tuturor proceselor în execuție

[Răspuns la întrebarea lui Vorobiev Evgeny]


Poți! În general, puteți face totul, doar pentru a afla cum :-)))

Puneți pe lista TListbox și pe butonul TButton, după tastarea butonului scrieți următorul cod:







procedura TForm1.Button1Click (expeditor: TObject);
var
Fereastră: hWnd;
tampon: matrice [0..127] de char;
începe
ListBox1.Clear;
Fereastră: = GetWindow (Handle, GW_HWNDFIRST);
în timp ce fereastra<>0 începe
dacă (fereastra<>Aplicație
IsWindowVisible (fereastră) și
(GetWindow (Fereastră, GW_OWNER) = 0) și
(GetWindowText (fereastră, buffer, sizeof (buffer))<>0)






apoi începe
GetWindowText (fereastră, buffer, sizeof (buffer));
ListBox1.Items.Add (StrPas (buffer));
se încheie;
Fereastră: = GetWindow (fereastră, GW_HWNDNEXT);
se încheie;
ListBox1.ItemIndex: = 0;
se încheie;


Cum se face acest lucru?

Prin utilizarea GetWindow () vom găsi prima fereastră se află în z-comanda, găsit fereastra mâner plasat în variabila fereastra Window: = GetWindow (mâner, GW_HWNDFIRST);


după care trebuie să evaluezi "Th, de fapt, am găsit-o" :))

Mai întâi, excludem posibilitatea de a adăuga o fereastră proprie în listă

dacă (fereastra<>Aplicație

atunci spunem că adăugăm fereastra în listă numai dacă este vizibilă

Numai dacă nu este un copil și are un antet

(GetWindow (Fereastră, GW_OWNER) = 0) și
(GetWindowText (fereastră, buffer, sizeof (buffer))<>0)


Si spun ei, doar daca fereastra gasita se potriveste cu toate conditiile setate, atunci doar adaugati-o in lista si apoi cautati fereastra urmatoare

și în același mod îl procesăm.







Articole similare

Trimiteți-le prietenilor: