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.