Delphi довідка

як отримати список всіх запущених процесів

[Відповідь на питання Воробйова Євгенія]


Можна, можливо! Взагалі, зробити можна все, тільки б знайти як :-)))

Постав на форму список TListbox і кнопку TButton, після натискання на кнопці напиши такий код:

procedure TForm1.Button1Click (Sender: TObject);
var
Window: hWnd;
buffer: array [0..127] of char;
begin
ListBox1.Clear;
Window: = GetWindow (Handle, GW_HWNDFIRST);
while Window<>0 do begin
if (Window<>Application.Handle) and
IsWindowVisible (Window) and
(GetWindow (Window, GW_OWNER) = 0) and
(GetWindowText (Window, buffer, sizeof (buffer))<>0)
then begin
GetWindowText (Window, buffer, sizeof (buffer));
ListBox1.Items.Add (StrPas (buffer));
end;
Window: = GetWindow (Window, GW_HWNDNEXT);
end;
ListBox1.ItemIndex: = 0;
end;


Як це зроблено?

За допомогою функції GetWindow () ми знаходимо перше вікно знаходиться в z-послідовності, дескриптор знайденого вікна поміщаємо в змінну Window Window: = GetWindow (Handle, GW_HWNDFIRST);


після цього потрібно оцінити "че, власне, ми там знайшли" :))

спочатку виключаємо можливість додавання власного вікна в список

if (Window<>Application.Handle) and

потім скажемо, що додаємо вікно в список тільки якщо воно мабуть

тільки якщо воно не є дочірнім і має заголовок

(GetWindow (Window, GW_OWNER) = 0) and
(GetWindowText (Window, buffer, sizeof (buffer))<>0)


І мовляв, тільки якщо знайдене вікно відповідає всім поставленим умовам, тільки тоді додамо його в список, після чого шукаємо наступне вікно

і точно так же обробляємо його.

Схожі статті